是否有一种方法可以优先使用部分特化而不是主模板?

时间:2011-10-15 00:06:17

标签: c++ templates partial-specialization

我问自己

  

您是否可以编写类模板和相应的部分特化,以便对于参数的任何模板参数集,编译器会进行部分特化?

例如

template<typename T>
struct A { };

template<typename T>
struct A</* what to write!?*/> { };

我似乎记得曾经读过这种方式可行,但我忘记了使这项工作的确切算法。

2 个答案:

答案 0 :(得分:4)

我的GCC版本很乐意接受:

template<typename T>
struct A;

template<typename... Pack>
struct A<Pack...> {};

答案 1 :(得分:2)

如果您允许使用SFINAE技巧,那么就像这样简单:

enum E { TRUE };

template<typename T, E = TRUE>
struct A
{
  static const bool value = false;
};

template<typename T>
struct A<T, TRUE>
{
  static const bool value = true;
};

Demo

相关问题