gpt4 book ai didi

通过别名进行 C++ 模板特化

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:41:16 25 4
gpt4 key购买 nike

是否可以通过别名来特化类模板?我想特化一个类模板 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> ,接受的答案提供的方法不起作用。我认为该问题的其他答案也没有为我的问题提供答案。

最佳答案

以下是可以接受的选择吗?

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;
}

关于通过别名进行 C++ 模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49940271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com