假设我有一个功能:
template <bool stuff>
inline void doSomething() {
if(stuff) {
cout << "Hello" << endl;
}
else {
cout << "Goodbye" << endl;
}
}
我这样称呼它:
doSomething<true>();
doSomething<false>();
它会弹出:
Hello
Goodbye
我真正想知道的是编译器是否完全优化了这个?当我用 true 调用模板化函数时,它会创建一个只输出“Hello”并避免 if 语句和“Goodbye”代码的函数吗?
这对于我刚刚编写的这个巨大的函数非常有用,它应该是非常优化的,并且尽可能地避免了不必要的 if 语句检查。我有一种很好的感觉,至少在带有优化的发布版本中,如果不是在没有优化的调试版本中。