我知道不可能专门化别名模板。
事实是,我经常发现以下重复出现的模式:
template<class Code, Code code>
struct BaseStruct;
enum MyCode {A,B,C};
template<MyCode code>
using MyStruct = BaseStruct<MyCode, code>;
template<> // Error not possible
struct MyStruct<MyCode::A>
{
};
template<> // Ok but too long to write
struct BaseStruct<MyCode, MyCode::A>
{
};
有时我必须编写许多特化,并且BaseStruct
可以有其他模板参数或者可能有一个长名称,所以理想的做法是使用别名然后对其进行特化。
大家遇到这种情况怎么办?我宁愿不使用宏或其他引入开销的方法。
PS我正在使用c ++ 11