// PR c++/66536 | |
// { dg-do compile { target c++14 } } | |
template <typename> struct make_impl; | |
struct Tuple; | |
template <> struct make_impl<Tuple> {}; | |
struct A { | |
template <typename X> auto operator()(X) { return make_impl<Tuple>(); } | |
}; | |
template <typename> A make; | |
template <typename _Tp, int> struct array { _Tp _M_elems; }; | |
struct Tracked { | |
Tracked(int); | |
}; | |
struct B { | |
Tracked tracker{0}; | |
}; | |
template <int> using ct_eq = B; | |
auto eq_arrays = make<Tuple>(array<ct_eq<0>, 0>{}); |