https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126962
--- Comment #7 from David Binderman <dcb314 at hotmail dot com> ---
Final reduction:
namespace {
template <typename> class reference_wrapper;
template <typename _Tp, _Tp> struct integral_constant;
template <typename _Tp, _Tp> _Tp integral_constantvalue;
template <bool __v> using __bool_constant = integral_constant<bool, __v>;
template <bool, typename> struct enable_if;
template <bool _Cond, typename _Tp = void>
using __enable_if_t = typename enable_if<_Cond, _Tp>::type;
template <bool> struct __conditional;
template <bool _Cond>
using __conditional_t = typename __conditional<_Cond>::type;
namespace {}
template <typename> struct __or_;
template <typename> struct __and_;
template <typename> struct remove_cv;
template <typename> struct is_arithmetic;
template <typename> struct __is_array_known_bounds;
template <typename _Tp, typename>
using __is_constructible_impl = __bool_constant<__is_constructible(_Tp)>;
template <typename, typename> struct decay;
template <typename> struct __strip_reference_wrapper;
template <typename _Tp> using __decay_t = typename _Tp ::type;
template <typename _Tp>
using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>;
template <typename... _Cond>
using _Require = __enable_if_t<__and_<_Cond...>::value>;
template <typename...> struct common_type;
template <typename> struct __success_type;
template <typename> struct __common_type_fold;
template <typename _Tp1, typename _Tp2, typename... _Rp>
struct common_type<_Tp1, _Tp2, _Rp...>;
} // namespace