【发布时间】:2022-08-10 03:25:50
【问题描述】:
#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
海合会 8.5.0
$ g++ -std=c++17 std_alternative.cpp
$ ./a.out
false true
为什么输出不一样?根据 c++17 哪个是正确的?我应该怎么做才能使我的代码以相同的方式在两个版本的 GCC 上工作?
-
是的,这是一个特别讨厌的语言缺陷,导致完全不直观的行为。
标签: c++ gcc c++17 std-variant