3

我在问自己

您能否编写一个类模板和相应的部分特化,使得对于参数的任何模板参数集,编译器都采用部分特化?

例如

template<typename T>
struct A { };

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

我似乎记得读过这可能以某种方式实现,但我忘记了使这项工作的确切算法。

4

2 回答 2

4

我的 GCC 版本很乐意接受:

template<typename T>
struct A;

template<typename... Pack>
struct A<Pack...> {};
于 2011-10-15T00:11:03.677 回答
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;
};

演示

于 2011-10-15T02:48:59.757 回答