OSDN Git Service

/cp
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / cpp0x / diag1.C
1 // { dg-options -std=c++0x }
2
3 template <int U>
4 struct TypeA
5 {
6   typedef int type;
7 };
8
9 template <int N>
10 struct TypeB
11 {
12   template <int U> typename TypeA<U>::type fn();
13 };
14
15 struct TypeC
16 {
17   TypeB<10> b;
18   // This was being printed as:
19   // template<int N>
20   //   decltype (((TypeC*)this)->
21   //             TypeC::b.
22   //             template<int U> typename TypeA<U>::type TypeB::fn [with int U = U, int N = 10, typename TypeA<U>::type = TypeA<U>::type]())
23   //   TypeC::fn()
24   // we don't want to see the template header, return type, or parameter bindings
25   // for TypeB::fn.
26   template <int N> auto fn() -> decltype(b.fn<N>()); // { dg-bogus "typename|with" }
27 };
28
29 int main()
30 {
31   TypeC().fn<4>(1);             // { dg-error "no match" }
32 }