#include <iostream>
#include <string>
#include <variant>
int main()
{
std::variant<std::string, bool> v{ "hasta la vista" };
std::cout << std::boolalpha << std::holds_alternative<std::string>(v) << ' ' << std::holds_alternative<bool>(v) << std::endl;
}
GCC 12.1.1
$ g++ std_alternative.cpp
$ ./a.out
true false
GCC 8.5.0
$ g++ -std=c++17 std_alternative.cpp
$ ./a.out
false true
为什么输出结果不同?根据c++17标准哪个是正确的?我应该怎样修改代码以使它在两个版本的GCC上执行结果一致?