| // A template declared with auto should be declared with auto in an |
| // explicit instantiation or explicit specialization, too. |
| // { dg-do compile { target c++1y } } |
| |
| template <class T> |
| auto f(T t) { return t; } |
| |
| template<> auto f<int>(int); |
| template auto f<float>(float); |
| template<> auto f(int*); |
| template auto f(float*); |
| |
| template<> short f<short>(short); // { dg-error "does not match" } |
| template char f<char>(char); // { dg-error "does not match" } |
| template<> short f(short*); // { dg-error "does not match" } |
| template char f(char*); // { dg-error "does not match" } |