OSDN Git Service

2014-02-26 Fabien Chene <fabien@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / template / partial12.C
1 // PR c++/46105
2
3 template< typename T >
4 struct empty { // support class is like stripped-down enable_if
5     typedef void type;
6 };
7
8 template< class T, typename v = void > // v is always void!
9 struct element {
10     typedef typename T::value_type type;
11 };
12
13 template< class T > // T in deduced context, T::element_type is SFINAE:
14 struct element< T, typename empty< typename T::element_type >::type > {
15     typedef typename T::element_type type;
16 };
17
18 template< class T >
19 struct element< T const, typename empty< typename T::element_type >::type > {
20     typedef typename T::element_type const type;
21 };
22
23 struct has_et {
24     typedef int element_type;
25 };
26
27 element<has_et const>::type ip = 0;