1 // { dg-do compile { target c++14 } } 2 3 template <class T, class U> struct ST; 4 template <class T> struct ST<T,T> {}; 5 6 int g(int); 7 char& g(char); 8 double&& g(double); 9 10 template <class T> auto&& f(T t) 11 { return g(t); } // { dg-warning "reference to temporary" } 12 13 int main() 14 { 15 ST<decltype(f(1)),int&&>(); 16 ST<decltype(f('\0')),char&>(); 17 ST<decltype(f(1.0)),double&&>(); 18 } 19