1 // PR c++/66536 2 // { dg-do compile { target c++14 } } 3 4 template <typename> struct make_impl; 5 struct Tuple; 6 template <> struct make_impl<Tuple> {}; 7 struct A { 8 template <typename X> auto operator()(X) { return make_impl<Tuple>(); } 9 }; 10 template <typename> A make; 11 template <typename _Tp, int> struct array { _Tp _M_elems; }; 12 struct Tracked { 13 Tracked(int); 14 }; 15 struct B { 16 Tracked tracker{0}; 17 }; 18 template <int> using ct_eq = B; 19 auto eq_arrays = make<Tuple>(array<ct_eq<0>, 0>{}); 20