From: Douglas Gregor Date: Mon, 12 Oct 2009 20:45:50 +0000 (+0000) Subject: More tests for explicit template specialization X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=09748395ab88f7f4678c9ff048fd035174dba519;p=clang More tests for explicit template specialization git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83896 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CXX/temp/temp.spec/temp.expl.spec/p10.cpp b/test/CXX/temp/temp.spec/temp.expl.spec/p10.cpp new file mode 100644 index 0000000000..61f1710a6b --- /dev/null +++ b/test/CXX/temp/temp.spec/temp.expl.spec/p10.cpp @@ -0,0 +1,7 @@ +// RUN: clang-cc -fsyntax-only -verify %s + +template class X; +template<> class X; // expected-note{{forward}} +X* p; + +X x; // expected-error{{incomplete type}} diff --git a/test/CXX/temp/temp.spec/temp.expl.spec/p11.cpp b/test/CXX/temp/temp.spec/temp.expl.spec/p11.cpp new file mode 100644 index 0000000000..e794e67a5e --- /dev/null +++ b/test/CXX/temp/temp.spec/temp.expl.spec/p11.cpp @@ -0,0 +1,8 @@ +// RUN: clang-cc -fsyntax-only -verify %s + +template class Array { /* ... */ }; +template void sort(Array& v); + +// explicit specialization for sort(Array&) +// with deduced template-argument of type int +template<> void sort(Array&); diff --git a/test/CXX/temp/temp.spec/temp.expl.spec/p13.cpp b/test/CXX/temp/temp.spec/temp.expl.spec/p13.cpp new file mode 100644 index 0000000000..63cf9f5e50 --- /dev/null +++ b/test/CXX/temp/temp.spec/temp.expl.spec/p13.cpp @@ -0,0 +1,6 @@ +// RUN: clang-cc -fsyntax-only %s + +template void f(T); + +template<> void f(int) { } +void f(int) { } diff --git a/test/CXX/temp/temp.spec/temp.expl.spec/p9.cpp b/test/CXX/temp/temp.spec/temp.expl.spec/p9.cpp new file mode 100644 index 0000000000..49481d2e6d --- /dev/null +++ b/test/CXX/temp/temp.spec/temp.expl.spec/p9.cpp @@ -0,0 +1,14 @@ +// RUN: clang-cc -fsyntax-only -verify %s + +namespace N { + template class X { /* ... */ }; + template class Y { /* ... */ }; + template<> class X { /* ... */ }; + template<> class Y; + + const unsigned NumElements = 17; +} + +template<> class N::Y { + int array[NumElements]; +};