考虑以下程序: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;
}
使用 g++,结果是:
1363389335665993
--------
1363389335666701
--------
1363389335666701
这意味着,函数marker
内部的静态常量test()
在第一次调用该函数时被评估。有没有办法或技巧(除非声明marker
为全局变量)marker
在程序开始时强制评估?