diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x/diag1.C')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/diag1.C | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/diag1.C b/gcc/testsuite/g++.dg/cpp0x/diag1.C new file mode 100644 index 0000000000..b3f30bcd0b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/diag1.C @@ -0,0 +1,32 @@ +// { dg-options -std=c++0x } + +template <int U> +struct TypeA +{ + typedef int type; +}; + +template <int N> +struct TypeB +{ + template <int U> typename TypeA<U>::type fn(); +}; + +struct TypeC +{ + TypeB<10> b; + // This was being printed as: + // template<int N> + // decltype (((TypeC*)this)-> + // TypeC::b. + // template<int U> typename TypeA<U>::type TypeB::fn [with int U = U, int N = 10, typename TypeA<U>::type = TypeA<U>::type]()) + // TypeC::fn() + // we don't want to see the template header, return type, or parameter bindings + // for TypeB::fn. + template <int N> auto fn() -> decltype(b.fn<N>()); // { dg-bogus "typename|with" } +}; + +int main() +{ + TypeC().fn<4>(1); // { dg-error "no match" } +} |