diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/SemaTemplate/temp_class_spec.cpp | 7 | ||||
-rw-r--r-- | clang/test/SemaTemplate/temp_class_spec_neg.cpp | 11 |
2 files changed, 17 insertions, 1 deletions
diff --git a/clang/test/SemaTemplate/temp_class_spec.cpp b/clang/test/SemaTemplate/temp_class_spec.cpp index ce1459b1d2b..6fedce76ae0 100644 --- a/clang/test/SemaTemplate/temp_class_spec.cpp +++ b/clang/test/SemaTemplate/temp_class_spec.cpp @@ -255,3 +255,10 @@ int is_nested_value_type_identity1[ //int is_nested_value_type_identity2[ // is_nested_value_type_identity<NoValueType>::value? -1 : 1]; + +// C++ [temp.class.spec]p4: +template<class T1, class T2, int I> class A { }; //#1 +template<class T, int I> class A<T, T*, I> { }; //#2 +template<class T1, class T2, int I> class A<T1*, T2, I> { }; //#3 +template<class T> class A<int, T*, 5> { }; //#4 +template<class T1, class T2, int I> class A<T1, T2*, I> { }; //#5 diff --git a/clang/test/SemaTemplate/temp_class_spec_neg.cpp b/clang/test/SemaTemplate/temp_class_spec_neg.cpp index d303146dcea..b9a12cb4de4 100644 --- a/clang/test/SemaTemplate/temp_class_spec_neg.cpp +++ b/clang/test/SemaTemplate/temp_class_spec_neg.cpp @@ -1,8 +1,17 @@ // RUN: clang-cc -fsyntax-only -verify %s template<typename T> struct vector; -// C++ [temp.class.spec]p9 +// C++ [temp.class.spec]p6: +namespace N { + namespace M { + template<typename T> struct A; // expected-note{{here}} + } +} + +template<typename T> +struct N::M::A<T*> { }; // expected-error{{not in namespace}} +// C++ [temp.class.spec]p9 // bullet 1 template <int I, int J> struct A {}; template <int I> struct A<I+5, I*2> {}; // expected-error{{depends on}} |