gpt4 book ai didi

c++ - 为什么 std::variant 在 GCC 8.5 和 GCC 12.1 上对于 `const char *` 文字的行为不同?

转载 作者:行者123 更新时间:2023-12-05 05:36:29 25 4
gpt4 key购买 nike

<分区>

#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;
}

海湾合作委员会 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 上运行?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com