我问自己
您是否可以编写类模板和相应的部分特化,以便对于参数的任何模板参数集,编译器会进行部分特化?
例如
template<typename T>
struct A { };
template<typename T>
struct A</* what to write!?*/> { };
我似乎记得曾经读过这种方式可行,但我忘记了使这项工作的确切算法。
答案 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;
};