// PR c++/81176 // { dg-do compile { target c++17 } } namespace std { template struct tuple_size; template struct tuple_element; } struct A { int i; template int& get() { return i; } }; template<> struct std::tuple_size { static const int value = 2; }; template struct std::tuple_element { using type = int; }; template struct same_type; template struct same_type {}; void foo (A x) { auto [ a, b ] = x; decltype(auto) c = a; same_type{}; same_type{}; }