gpt4 book ai didi

c++ - 模板非类型参数 : check condition at compile-time

转载 作者:行者123 更新时间:2023-11-27 23:14:12 25 4
gpt4 key购买 nike

我想使用模板非类型参数在编译时对代码进行自动分支。 IE。像这样的东西:

template<std::size_t TDimension>
class A
{
public:
A()
{}

~A()
{}

void print()
{
if(TDimension == 3)
std::cout << "My dimension is 3" << std::endl;
else if(TDimension == 2)
std::cout << "My dimension is 2" << std::endl;
}
};

上面的代码在运行时分支代码。问题是:如何在编译时启用它以提高性能?

最佳答案

由于 TDimension 和您与之比较的值都是常量,编译器应该只生成 if 的一个分支,不运行-时间比较,只要您启用优化。

可以肯定的是,您可以显式专门化:

template<std::size_t TDimension>
class A
{
public:
void print() {}
// or void print(); to give an error for an handled value
};

template <> void A<3>::print() {std::cout << "My dimension is 3" << std::endl;}
template <> void A<2>::print() {std::cout << "My dimension is 2" << std::endl;}

关于c++ - 模板非类型参数 : check condition at compile-time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17790750/

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