Home | History | Annotate | Download | only in dcl.ref
      1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
      2 // expected-no-diagnostics
      3 
      4 template<typename T, typename U>
      5 struct is_same {
      6   static const bool value = false;
      7 };
      8 
      9 template<typename T>
     10 struct is_same<T, T> {
     11   static const bool value = true;
     12 };
     13 #define JOIN2(X,Y) X##Y
     14 #define JOIN(X,Y) JOIN2(X,Y)
     15 #define CHECK_EQUAL_TYPES(T1, T2) \
     16   int JOIN(array,__LINE__)[is_same<T1, T2>::value? 1 : -1]
     17 
     18 int i;
     19 typedef int& LRI;
     20 typedef int&& RRI;
     21 
     22 typedef LRI& r1; CHECK_EQUAL_TYPES(r1, int&);
     23 typedef const LRI& r2; CHECK_EQUAL_TYPES(r2, int&);
     24 typedef const LRI&& r3; CHECK_EQUAL_TYPES(r3, int&);
     25 
     26 typedef RRI& r4; CHECK_EQUAL_TYPES(r4, int&);
     27 typedef RRI&& r5; CHECK_EQUAL_TYPES(r5, int&&);
     28