annotate gcc/testsuite/g++.dg/cpp0x/sfinae34.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++/52422
kono
parents:
diff changeset
2 // { dg-do compile { target c++11 } }
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 template<class T>
kono
parents:
diff changeset
5 struct add_rval_ref
kono
parents:
diff changeset
6 {
kono
parents:
diff changeset
7 typedef T&& type;
kono
parents:
diff changeset
8 };
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 template<>
kono
parents:
diff changeset
11 struct add_rval_ref<void>
kono
parents:
diff changeset
12 {
kono
parents:
diff changeset
13 typedef void type;
kono
parents:
diff changeset
14 };
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 template<class T>
kono
parents:
diff changeset
17 typename add_rval_ref<T>::type create();
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 template<class T, class U,
kono
parents:
diff changeset
20 class = decltype( (create<T>().*create<U>())() )
kono
parents:
diff changeset
21 >
kono
parents:
diff changeset
22 auto f(int) -> char(&)[1];
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 template<class, class>
kono
parents:
diff changeset
25 auto f(...) -> char(&)[2];
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 static_assert(sizeof(f<void, void>(0)) != 1, "");