Mercurial > hg > CbC > CbC_llvm
comparison clang/test/SemaTemplate/instantiate-call.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 namespace N1 { | |
4 struct X0 { }; | |
5 | |
6 int& f0(X0); | |
7 } | |
8 | |
9 namespace N2 { | |
10 char& f0(char); | |
11 | |
12 template<typename T, typename Result> | |
13 struct call_f0 { | |
14 void test_f0(T t) { | |
15 Result result = f0(t); | |
16 } | |
17 }; | |
18 } | |
19 | |
20 template struct N2::call_f0<int, char&>; | |
21 template struct N2::call_f0<N1::X0, int&>; | |
22 | |
23 namespace N3 { | |
24 template<typename T, typename Result> | |
25 struct call_f0 { | |
26 void test_f0(T t) { | |
27 Result &result = f0(t); // expected-error {{undeclared identifier}} \ | |
28 expected-error {{neither visible in the template definition nor found by argument-dependent lookup}} | |
29 } | |
30 }; | |
31 } | |
32 | |
33 template struct N3::call_f0<int, char&>; // expected-note{{instantiation}} | |
34 template struct N3::call_f0<N1::X0, int&>; | |
35 | |
36 short& f0(char); // expected-note {{should be declared prior to the call site}} | |
37 namespace N4 { | |
38 template<typename T, typename Result> | |
39 struct call_f0 { | |
40 void test_f0(T t) { | |
41 Result &result = f0(t); | |
42 } | |
43 }; | |
44 } | |
45 | |
46 template struct N4::call_f0<int, short&>; | |
47 template struct N4::call_f0<N1::X0, int&>; | |
48 template struct N3::call_f0<int, short&>; // expected-note{{instantiation}} | |
49 | |
50 // FIXME: test overloaded function call operators, calls to member | |
51 // functions, etc. |