|
|
1
1
你现在的代码很好。如果条件每次都采用不同的分支,则只会损害管道计算。当这个标志只写一次时,分支预测做得非常好。
总之,你的问题的常见解决方案是C预处理器宏。在技术上可以解决的问题。
如果你只想制作库头,也可以用模板来解决,但要复杂一些。由于编译时间开销等原因,我尽量避免模板跨越库边界。 |
|
|
2
0
我认为这个例子太过简化,看不出它的意图。所以让我假设你有充分的理由这么做。 首先,确保您正在MSVC上进行优化,这将是在命令行中添加/O2(或类似内容)。 第二,衡量。CPU中的分支预测器非常有效,您可能甚至没有注意到。
也就是说,当编译器看到
当有疑问时,或者当您想在编译时强制它时,使用
另一种选择是将函数设置为constexpr,这可能并不总是可行的,尽管它看起来是这样的:
你可以这样称呼它:
这样,编译器就需要在编译时计算s1的值。而它可以在运行时重用该函数来计算s2。(注意变量i被传递) 关于链接器错误,C++中有一个ODR(一个定义规则)。您可以通过添加内联来绕过它,但是,您应该在任何地方都有相同的实现!我不建议将实现放在CPP文件中,因为它是UB的收据。 |
|
|
111111 · 确定作为模板参数传递的函数的参数类型 1 年前 |
|
|
BCS · 通过使用别名显式专门化类模板是否有效? 1 年前 |
|
|
Mickey · C++为所有模板专用类定义成员函数 2 年前 |
|
|
HKoplin · 如何不必指定工厂的退货类型 2 年前 |
|
|
B. A. Sylla · 两种特殊方法中的相同代码 9 年前 |
|
|
StoneThrow · 模板运算符<未调用 9 年前 |