annotate gcc/testsuite/g++.dg/cpp0x/vt-59988.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // PR c++/59988
kono
parents:
diff changeset
2 // { dg-do compile { target c++11 } }
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 template<template<typename...> class C, typename... T>
kono
parents:
diff changeset
5 struct is_valid_specialization {
kono
parents:
diff changeset
6 typedef struct { char _; } yes;
kono
parents:
diff changeset
7 typedef struct { yes _[2]; } no;
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 template<template<typename...> class D, typename... U>
kono
parents:
diff changeset
10 static yes test(D<U...>*);
kono
parents:
diff changeset
11 template<template<typename...> class D, typename... U>
kono
parents:
diff changeset
12 static no test(...);
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 constexpr static bool value = (sizeof(test<C, T...>(0)) == sizeof(yes));
kono
parents:
diff changeset
15 };
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 template<typename T>
kono
parents:
diff changeset
18 struct Test1 { };
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 template<typename T1, typename T2>
kono
parents:
diff changeset
21 struct Test2 { };
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 template<typename...>
kono
parents:
diff changeset
24 struct TestV { };
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 static_assert(!is_valid_specialization<Test1, int>::value, "");
kono
parents:
diff changeset
27 static_assert(!is_valid_specialization<Test2, int>::value, "");
kono
parents:
diff changeset
28 static_assert(!is_valid_specialization<TestV, int>::value, "");