假设我有一个函数:
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语句检查。我有一种非常好的感觉,如果不是在没有优化的调试版本中,至少在带有优化的发布版本中是这样的。
https://stackoverflow.com/questions/12030497
复制相似问题