我在问自己
您能否编写一个类模板和相应的部分特化,使得对于参数的任何模板参数集,编译器都采用部分特化?
例如
template<typename T>
struct A { };
template<typename T>
struct A</* what to write!?*/> { };
我似乎记得读过这可能以某种方式实现,但我忘记了使这项工作的确切算法。
我在问自己
您能否编写一个类模板和相应的部分特化,使得对于参数的任何模板参数集,编译器都采用部分特化?
例如
template<typename T>
struct A { };
template<typename T>
struct A</* what to write!?*/> { };
我似乎记得读过这可能以某种方式实现,但我忘记了使这项工作的确切算法。
我的 GCC 版本很乐意接受:
template<typename T>
struct A;
template<typename... Pack>
struct A<Pack...> {};
如果您允许 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;
};
演示。