13b4abb67SDouglas Gregor // RUN: %clang_cc1 -fsyntax-only -verify %s 2*542f04ccSCharles Li // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s 3*542f04ccSCharles Li // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 43b4abb67SDouglas Gregor template<typename T> 53b4abb67SDouglas Gregor class X0 { 6*542f04ccSCharles Li friend T; 7*542f04ccSCharles Li #if __cplusplus <= 199711L // C++03 or earlier modes 8*542f04ccSCharles Li // expected-warning@-2{{non-class friend type 'T' is a C++11 extension}} 9*542f04ccSCharles Li #else 10*542f04ccSCharles Li // expected-no-diagnostics 11*542f04ccSCharles Li #endif 123b4abb67SDouglas Gregor }; 133b4abb67SDouglas Gregor 143b4abb67SDouglas Gregor class X1 { }; 153b4abb67SDouglas Gregor enum E1 { }; 163b4abb67SDouglas Gregor X0<X1> x0a; 173b4abb67SDouglas Gregor X0<X1 *> x0b; 183b4abb67SDouglas Gregor X0<int> x0c; 193b4abb67SDouglas Gregor X0<E1> x0d; 203b4abb67SDouglas Gregor 21