Daily bump.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp2a / explicit4.C
blob822a1f155b4b895d803b7ce2fceec99731e622f3
1 // P0892R2
2 // { dg-do compile }
3 // { dg-options "-std=c++2a" }
5 template<int T = 1>
6 struct S {
7   explicit(T) S(int);
8   explicit(!T) S(int, int);
9 };
11 template<typename T, int N>
12 struct S2 {
13   explicit(N) S2(T);
16 template<typename T>
17 struct S3 {
18   explicit((T) 1.0) S3(int);
21 int
22 main ()
24   S<> s1 = { 1 }; // { dg-error "converting" }
25   S<true> s2 = { 1 }; // { dg-error "converting" }
26   S<false> s3 = { 1 };
27   S<> s4{ 1 };
28   S<true> s5{ 1 };
29   S<> s6 = { 1, 2 };
30   S<true> s7 = { 1, 2 };
31   S<false> s8 = { 1, 2 }; // { dg-error "converting" }
32   S<false> s9{ 1, 2 };
34   const int x = 1;
35   S<x> s10 = { 1 }; // { dg-error "converting" }
36   S<x> s11{ 2 };
38   S2<int, true> s12 = { 1 }; // { dg-error "converting" }
40   S3<int> s13 = { 1 }; // { dg-error "converting" }