Betrachten Sie den folgenden Code (LWS):g ++ vs Intel/Clang Argument übergeben Reihenfolge?
#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;
}
Sie haben es mehrmals laufen, weil manchmal, gibt es keinen sichtbaren Unterschied. Aber wenn es ein sichtbarer Unterschied zwischen dem Zeitpunkt der Auswertung von first
und second
ist, ist das Ergebnis die folgende unter g ++:
1363376239363175
1363376239363174
und die folgenden unter Intel und Klirren:
1363376267971435
1363376267971436
Es bedeutet, dass Unter g ++ wird das Argument second
zuerst ausgewertet, und unter Intel und Clam wird das first
Argument zuerst ausgewertet.
Welches ist nach dem C++ 11-Standard wahr?
Ordentliche Art und Weise, die Bewertungsreihenfolge zu finden. – GManNickG