首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++使用模板来避免编译器检查布尔值

C++使用模板来避免编译器检查布尔值
EN

Stack Overflow用户
提问于 2012-08-20 06:28:37
回答 2查看 5.6K关注 0票数 21

假设我有一个函数:

代码语言:javascript
复制
template <bool stuff>
inline void doSomething() {
    if(stuff) {
        cout << "Hello" << endl;
    }
    else {
        cout << "Goodbye" << endl;
    }
}

我这样称呼它:

代码语言:javascript
复制
doSomething<true>();
doSomething<false>();

它会弹出:

代码语言:javascript
复制
Hello
Goodbye

我真正想知道的是,编译器是否完全优化了这一点?当我使用true调用模板化函数时,它是否会创建一个只输出"Hello“的函数,并避免if语句和"Goodbye”代码?

对于我刚刚写的这个巨大的函数来说,这将是非常有用的,它应该是非常优化的,并且尽可能避免不必要的if语句检查。我有一种非常好的感觉,如果不是在没有优化的调试版本中,至少在带有优化的发布版本中是这样的。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12030497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档