我对constepxt ctors感到困惑。
以下是否同样快(或更快)
while(true)
{
constexpr std::chrono::hours one_hour(1);
..
}
比(仅创建一个实例):
while(true)
{
static constexpr std::chrono::hours one_hour(1);
..
}
换句话说,constexpr ctor是否意味着没有任何运行时开销?
答案 0 :(得分:8)
constexpr ctor是否意味着没有任何运行时开销?
如有疑问,可随时查看;例如:
#include <chrono>
template <long Long>
class dummy { };
int main() {
constexpr std::chrono::hours one_hour(1);
dummy<one_hour.count()> d;
}
它编译的事实意味着one_hour
是编译时常量,因此没有任何运行时开销。
答案 1 :(得分:1)
此处添加constexpr
不会产生太大影响,因为std::chrono
持续时间和时间点只包含一个整数成员。换一种说法。初始化的性能与int
相同。