是否可以通过别名来专门化类模板?我想专门化一个类模板S
,比如double
。但它与现有类型X<double, A, B>
完全相同。所以我想简洁地使用它。
template<class, class, class> X;
template<class, class> Y;
template<class> struct S;
template<> struct S<int> { ... }; // usual way to specialize
template<> using S<double> = X<double, A, B>; // what I want, but compile error.
template<> using S<float> = Y<C, D>; // what I want, but compile error.
我想要最后一行。有没有办法实现这个目标?
此问题被标记为重复
Best way (Or workaround) to specialize a template alias。但是,如果存在其他类型对,则无法应用该问题的接受答案。例如,如果S<float>
与Y<C, D>
别名,则接受的答案提供的方法不起作用。我认为这个问题的其他答案也没有为我的问题提供答案。
答案 0 :(得分:0)
以下是否可以接受?
template<class U, class V, class W> class X;
template<> class X<double,int, bool> {
public:
X() {}
};
template<class> struct S;
template<> struct S<float> {
typedef X<double, int, bool> type;
};
int main() {
S<float>::type s;
}