2 つの変数の昇順を確認しようとしているときに、次のコード スニペットで説明できる Visual Studio 2012 C++ コンパイラで奇妙な異常に遭遇しました。
double x1 = 2;
double x2 = 1;
std::tie(x1, x2) = std::minmax(x1, x2);
std::cout << "x1 = " << x1 << ", x2 = " << x2 << "\n";
x1 が 1 で x2 が 2 であると予想されますが、そうではありません。その代わり
//output:
//x1 = 1, x2 = 1
再び同様の罠に陥らないようにするために、何か良い説明はありますか?