gpt4 book ai didi

c++ - 使用指令特化的模板

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:04 24 4
gpt4 key购买 nike

虽然模板特化是允许的,但不能使用指令特化模板。有什么技巧可以实现它?

例如:


没关系:

template <class A>
class MyTemplate { ... };

template <>
class MyTemplate<int> { ... };

这不是:

template <class A>
using Alias = SomeClass<A>;

template <>
using Alias<int> = MyBigIntClass;

编辑:

目标是使用Alias<int>在客户端代码中,将其设置为 MyBigIntClass在幕后。

最佳答案

这是诀窍(使用模板特化):

template <class A>
struct Helper{ //default case
using t = SomeClass<A>; //use void or omit this line to disable default case
};

template <class A>
using Alias = typename Helper<A>::t;

template <>
struct Helper<int>{
using t = MyBigIntClass; //whatever you need
};

int main()
{
Alias<int> a = 0; //It's MyBigIntClass under the hood
}

关于c++ - 使用指令特化的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24150528/

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