次のコード ( LWS )を検討してください。
#include <iostream>
#include <chrono>
inline void test(
const std::chrono::high_resolution_clock::time_point& first,
const std::chrono::high_resolution_clock::time_point& second)
{
std::cout << first.time_since_epoch().count() << std::endl;
std::cout << second.time_since_epoch().count() << std::endl;
}
int main(int argc, char* argv[])
{
test(std::chrono::high_resolution_clock::now(),
std::chrono::high_resolution_clock::now());
return 0;
}
目に見える違いがない場合があるため、数回実行する必要があります。first
しかし、との評価時間の間に目に見える違いがある場合second
、結果は g++ の下で次のようになります。
1363376239363175
1363376239363174
および intel および clang の下の以下:
1363376267971435
1363376267971436
これは、g++ ではsecond
引数が最初に評価され、intel と clang ではfirst
引数が最初に評価されることを意味します。
C++11 標準に従って正しいのはどれですか?