OSDN Git Service

* call.c (null_ptr_cst_p): Use maybe_constant_value.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / cpp0x / constexpr-data2.C
1 // { dg-do "compile" }
2 // { dg-options "-std=gnu++0x" }
3
4 template<typename _Tp, _Tp v>
5   struct A3
6   {
7     typedef _Tp value_type;
8     typedef A3<value_type,v> type;
9
10     static constexpr value_type value = v;
11
12     constexpr operator value_type() { return value; }
13   };
14
15 // Partial specialization.
16 template<typename _Tp, _Tp v>
17   struct A3<_Tp*, v>
18   {
19     typedef _Tp* value_type;
20     typedef A3<value_type,v> type;
21
22     static constexpr value_type value = v;
23
24     constexpr operator value_type() { return value; }
25   };
26
27 // Explicit specialization.
28 template<>
29   struct A3<unsigned short, 0>
30   {
31     typedef unsigned short value_type;
32     typedef A3<value_type, 0> type;
33
34     static constexpr value_type value = 0;
35
36     constexpr operator value_type() { return value; }
37   };
38
39 // Explicitly instantiate.
40 template struct A3<int, 415>;
41
42 // Extern explicitly instantiate.
43 extern template struct A3<int, 510>;
44
45 // Use.
46 A3<int, 1111> a31;
47 // FIXME should this be an error?
48 A3<char, 9999> a32;             // { dg-warning "overflow" }