Mercurial > hg > CbC > CbC_llvm
comparison clang/test/SemaTemplate/instantiate-expr-5.cpp @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
147:c2174574ed3a | 150:1d019706d866 |
---|---|
1 // RUN: %clang_cc1 -fsyntax-only -verify %s | |
2 | |
3 template <class A> int x(A x) { return x++; } | |
4 int y() { return x<int>(1); } | |
5 | |
6 namespace PR5880 { | |
7 template<typename T> | |
8 struct A { | |
9 static const int a = __builtin_offsetof(T, a.array[5].m); // expected-error{{no member named 'a' in 'HasM'}} | |
10 }; | |
11 struct HasM { | |
12 float m; | |
13 }; | |
14 | |
15 struct ArrayOfHasM { | |
16 HasM array[10]; | |
17 }; | |
18 | |
19 struct B { ArrayOfHasM a; }; | |
20 A<B> x; | |
21 A<HasM> x2; // expected-note{{in instantiation of}} | |
22 | |
23 template<typename T> | |
24 struct AnonymousUnion { | |
25 union { | |
26 int i; | |
27 float f; | |
28 }; | |
29 }; | |
30 | |
31 template<typename T> | |
32 void test_anon_union() { | |
33 int array1[__builtin_offsetof(AnonymousUnion<T>, f) == 0? 1 : -1]; | |
34 int array2[__builtin_offsetof(AnonymousUnion<int>, f) == 0? 1 : -1]; | |
35 } | |
36 | |
37 template void test_anon_union<int>(); | |
38 } | |
39 | |
40 namespace AddrOfClassMember { | |
41 template <typename T> struct S { | |
42 int n; | |
43 static void f() { | |
44 +T::n; // expected-error {{invalid use of member}} | |
45 } | |
46 }; | |
47 void g() { S<S<int> >::f(); } // expected-note {{in instantiation of}} | |
48 } |