From 341dcc7dcf47ec38a73adaef645b934572bc839b Mon Sep 17 00:00:00 2001 From: dodji Date: Tue, 22 Nov 2011 16:41:10 +0000 Subject: PR c++/51143 - Alias template allows class definition gcc/cp PR c++/51143 * parser.c (cp_parser_alias_declaration): Don't allow type definition in templates. gcc/testsuite PR c++/51143 * g++.dg/cpp0x/alias-decl-16.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181626 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/g++.dg/cpp0x/alias-decl-16.C | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/alias-decl-16.C (limited to 'gcc/testsuite/g++.dg/cpp0x/alias-decl-16.C') diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-16.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-16.C new file mode 100644 index 00000000000..d66660a5f4e --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-16.C @@ -0,0 +1,28 @@ +// Origin PR c++/51143 +// { dg-options "-std=c++11" } + +using A0 = struct B0 { void f() {} }; + +template +using A1 = + struct B1 { // { dg-error "types may not be defined in alias template" } + static auto constexpr value = N; + }; + +A1<0> a1; + +template +using A2 = + struct B2 { // { dg-error "types may not be defined in alias template" } + void f(T){} + }; + +A2 a2; + +template +using A3 = + enum B3 {b = 0;}; //{ dg-error "types may not be defined in alias template" } + +A3 a3; + +int main() { } -- cgit v1.2.1