re PR c++/59988 (Failing to specialize template class)

2015-03-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/59988
	* g++.dg/cpp0x/vt-59988.C: New.

From-SVN: r221623
This commit is contained in:
Paolo Carlini 2015-03-24 10:50:36 +00:00
parent e72baed7e9
commit cca38f293d
1 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1,28 @@
// PR c++/59988
// { dg-do compile { target c++11 } }
template<template<typename...> class C, typename... T>
struct is_valid_specialization {
typedef struct { char _; } yes;
typedef struct { yes _[2]; } no;
template<template<typename...> class D, typename... U>
static yes test(D<U...>*);
template<template<typename...> class D, typename... U>
static no test(...);
constexpr static bool value = (sizeof(test<C, T...>(0)) == sizeof(yes));
};
template<typename T>
struct Test1 { };
template<typename T1, typename T2>
struct Test2 { };
template<typename...>
struct TestV { };
static_assert(!is_valid_specialization<Test1, int>::value, "");
static_assert(!is_valid_specialization<Test2, int>::value, "");
static_assert(!is_valid_specialization<TestV, int>::value, "");