template <bool flag>
class foo
{
public:
int bar()
{
if(flag)
{
// stuff
}
}
};
当编译器编译此类时,它会将 flag 参数替换为 true 或 false。然后我们有 if(true) (或 if(false) )。然后,if 子句检查常量表达式,并在编译时被删除。我可以期望编译器有这样的行为吗?
不,你不能。任何优化完全取决于编译器。由于您使用的是模板,因此您应该为这两种情况编写专门化flag
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)