gpt4 book ai didi

c++ - 为什么 clang 处理这个简单的 std::variant 代码的异常?

转载 作者:行者123 更新时间:2023-12-01 12:47:44 25 4
gpt4 key购买 nike

如果我们有这样的代码:

#include <variant>

int main(){
using V = std::variant<int, double>;
V a = 5;
V b = 5.6;

a.swap(b);
}
https://gcc.godbolt.org/z/oqGiHs
如果你用 clang 编译,它会发出处理异常的代码 swap .
这是为什么?两种变体都是非空的,底层类型是异常安全的。
更新:
具有讽刺意味的是,这无一异常(exception)地编译:
#include <variant>

template<class T>
void sw(T &a, T &b){
auto c = a;
a = b;
b = c;
}

int main(){
using V = std::variant<int, double>;

V a = 5;
V b = 5.6;

sw(a, b);
}

最佳答案

这原来是 clang 错误。
https://bugs.llvm.org/show_bug.cgi?id=46342
它似乎已修复,但我找不到修复的版本。

关于c++ - 为什么 clang 处理这个简单的 std::variant 代码的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62404209/

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