111
|
1 // { dg-options "-fdiagnostics-show-template-tree" }
|
|
2
|
|
3 template<typename> struct vector {};
|
|
4 template<typename, typename> struct map {};
|
|
5 template<int> struct arr {};
|
|
6
|
|
7 void fn_1(vector<int>);
|
|
8 void fn_2(map<int, int>);
|
|
9 void fn_3(vector<map<int, float> >);
|
|
10 void takes_arr_10 (arr<10>);
|
|
11
|
|
12 void test ()
|
|
13 {
|
|
14 fn_1 (vector<int> ());
|
|
15 fn_1 (42); // { dg-error "could not convert '42' from 'int' to 'vector<int>'" }
|
|
16 fn_1 (vector<double> ()); // { dg-error "could not convert .* from 'vector<double>' to 'vector<int>'" }
|
|
17 /* { dg-begin-multiline-output "" }
|
|
18 vector<
|
|
19 [double != int]>
|
|
20 { dg-end-multiline-output "" } */
|
|
21 fn_1 (map<int, int> ()); // { dg-error "could not convert .* from 'map<int, int>' to 'vector<int>'" }
|
|
22
|
|
23 fn_2 (map<int, int>());
|
|
24 fn_2 (map<int, double>()); // { dg-error "could not convert .* from 'map<.\\.\\.\\..,double>. to .map<.\\.\\.\\..,int>'" }
|
|
25 /* { dg-begin-multiline-output "" }
|
|
26 map<
|
|
27 [...],
|
|
28 [double != int]>
|
|
29 { dg-end-multiline-output "" } */
|
|
30 fn_2 (map<double, double>()); // { dg-error "could not convert .* from .map<double,double>. to .map<int,int>." }
|
|
31 /* { dg-begin-multiline-output "" }
|
|
32 map<
|
|
33 [double != int],
|
|
34 [double != int]>
|
|
35 { dg-end-multiline-output "" } */
|
|
36
|
|
37 fn_3 (vector<map<int, float> >());
|
|
38 fn_3 (vector<map<int, double> >()); // { dg-error "could not convert .* from 'vector<map<.\\.\\.\\..,double>>' to 'vector<map<.\\.\\.\\..,float>>'" }
|
|
39 /* { dg-begin-multiline-output "" }
|
|
40 vector<
|
|
41 map<
|
|
42 [...],
|
|
43 [double != float]>>
|
|
44 { dg-end-multiline-output "" } */
|
|
45
|
|
46 takes_arr_10 (arr<5>()); // { dg-error "could not convert '.*' from 'arr<5>' to 'arr<10>'" }
|
|
47 /* { dg-begin-multiline-output "" }
|
|
48 arr<
|
|
49 [5 != 10]>
|
|
50 { dg-end-multiline-output "" } */
|
|
51 }
|