1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
// { dg-options "-fdiagnostics-show-template-tree" }
/* Example of default template args, and various kinds of mismatch. */
template <int = 0, int = 1, int = 2>
struct s {};
void takes_s (s<> );
void takes_s013 (s<0, 1, 3> );
void takes_s321 (s<3, 2, 1> );
void test ()
{
takes_s (s<>());
takes_s (s<0, 1>());
takes_s (s<0, 1, 2>());
takes_s (s<0, 2>()); // { dg-error "could not convert '.*' from 's<.\\.\\.\\..,2>' to 's<.\\.\\.\\..,1>'" }
/* { dg-begin-multiline-output "" }
s<
[...],
[2 != 1]>
{ dg-end-multiline-output "" } */
takes_s (s<1>()); // { dg-error "could not convert '.*' from 's<1>' to 's<0>'" }
/* { dg-begin-multiline-output "" }
s<
[1 != 0]>
{ dg-end-multiline-output "" } */
takes_s (s<0, 1, 3>()); // { dg-error "could not convert '.*' from 's<.\\.\\.\\..,.\\.\\.\\..,3>' to 's<.\\.\\.\\..,.\\.\\.\\..,2>'" }
/* { dg-begin-multiline-output "" }
s<
[...],
[...],
[3 != 2]>
{ dg-end-multiline-output "" } */
takes_s (s<3, 2, 0>()); // { dg-error "could not convert '.*' from 's<3,2,0>' to 's<0,1,2>'" }
/* { dg-begin-multiline-output "" }
s<
[3 != 0],
[2 != 1],
[0 != 2]>
{ dg-end-multiline-output "" } */
takes_s (s<3, 2, 1>()); // { dg-error "could not convert '.*' from 's<3,2,1>' to 's<0,1,2>'" }
/* { dg-begin-multiline-output "" }
s<
[3 != 0],
[2 != 1],
[1 != 2]>
{ dg-end-multiline-output "" } */
takes_s013 (s<0, 1, 2>()); // { dg-error "could not convert '.*' from 's<.\\.\\.\\..,.\\.\\.\\..,2>' to 's<.\\.\\.\\..,.\\.\\.\\..,3>'" }
/* { dg-begin-multiline-output "" }
s<
[...],
[...],
[2 != 3]>
{ dg-end-multiline-output "" } */
takes_s321 (s<>()); // { dg-error "could not convert '.*' from 's<0,1,2>' to 's<3,2,1>'" }
/* { dg-begin-multiline-output "" }
s<
[0 != 3],
[1 != 2],
[2 != 1]>
{ dg-end-multiline-output "" } */
takes_s321 (s<0, 1, 3>()); // { dg-error "could not convert '.*' from 's<0,1,3>' to 's<3,2,1>'" }
/* { dg-begin-multiline-output "" }
s<
[0 != 3],
[1 != 2],
[3 != 1]>
{ dg-end-multiline-output "" } */
takes_s321 (s<3, 2, 0>()); // { dg-error "could not convert '.*' from 's<.\\.\\.\\..,.\\.\\.\\..,0>' to 's<.\\.\\.\\..,.\\.\\.\\..,1>'" }
/* { dg-begin-multiline-output "" }
s<
[...],
[...],
[0 != 1]>
{ dg-end-multiline-output "" } */
takes_s321 (s<3, 2, 1>());
takes_s321 (s<1, 2, 3>()); // { dg-error "could not convert '.*' from 's<1,.\\.\\.\\..,3>' to 's<3,.\\.\\.\\..,1>'" }
/* { dg-begin-multiline-output "" }
s<
[1 != 3],
[...],
[3 != 1]>
{ dg-end-multiline-output "" } */
}
|