diff options
Diffstat (limited to 'test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp')
-rw-r--r-- | test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp b/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp new file mode 100644 index 0000000..7352be2d --- /dev/null +++ b/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp @@ -0,0 +1,21 @@ +// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s + +// Check for template type parameter pack (mis-)matches with template +// type parameters. +template<typename ...T> struct X0t; +template<typename ...T> struct X0t; + +template<typename ...T> struct X1t; // expected-note{{previous template type parameter pack declared here}} +template<typename T> struct X1t; // expected-error{{template type parameter conflicts with previous template type parameter pack}} + +template<typename T> struct X2t; // expected-note{{previous template type parameter declared here}} +template<typename ...T> struct X2t; // expected-error{{template type parameter pack conflicts with previous template type parameter}} + +template<template<typename ...T> class> struct X0tt; +template<template<typename ...T> class> struct X0tt; + +template<template<typename ...T> class> struct X1tt; // expected-note{{previous template type parameter pack declared here}} +template<template<typename T> class> struct X1tt; // expected-error{{template type parameter conflicts with previous template type parameter pack}} + +template<template<typename T> class> struct X2tt; // expected-note{{previous template type parameter declared here}} +template<template<typename ...T> class> struct X2tt; // expected-error{{template type parameter pack conflicts with previous template type parameter}} |