考虑下面的程序:LWS在开始时间强制要评估的函数内的静态常量?
#include <iostream>
#include <chrono>
void test()
{
static const std::chrono::high_resolution_clock::time_point marker
= std::chrono::high_resolution_clock::now();
std::cout<<marker.time_since_epoch().count()<<std::endl;
}
int main(int argc, char* argv[])
{
std::cout<<std::chrono::high_resolution_clock::now()
.time_since_epoch().count()<<std::endl;
std::cout<<"--------"<<std::endl;
test();
std::cout<<"--------"<<std::endl;
test();
return 0;
}
随着克++,其结果是:
1363389335665993
--------
1363389335666701
--------
1363389335666701
这意味着,所述test()
函数内的静常数这个函数的第一呼叫期间评价。除了声明作为全局变量外,是否有方法或技巧来强制在程序开始时对进行评估?
为什么不在开始时调用函数?你可以传递一个标志,这样该函数就不会做任何事情。 – QuentinUK 2013-03-15 23:27:21