Compiler projects using llvm
// RUN: %clang_cc1 -fsyntax-only -verify %s
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
template<typename T>
class X0 {
  friend T;
#if __cplusplus <= 199711L // C++03 or earlier modes
  // expected-warning@-2{{non-class friend type 'T' is a C++11 extension}}
#else
  // expected-no-diagnostics
#endif
};

class X1 { };
enum E1 { };
X0<X1> x0a;
X0<X1 *> x0b;
X0<int> x0c;
X0<E1> x0d;