gpt4 book ai didi

c++ - std::tie 的异常安全性如何?

转载 作者:可可西里 更新时间:2023-11-01 16:16:12 26 4
gpt4 key购买 nike

std::tie 返回一个引用元组,因此您可以执行以下操作:

int foo, bar, baz;
std::tie(foo, bar, baz) = std::make_tuple(1, 2, 3);

这类似于 Python 中的 foo, bar, baz = (1, 2, 3)

如果其中一个赋值抛出,应该会发生什么,如下例所示?

int foo = 1337;
struct Bar {
Bar& operator=(Bar) { throw std::exception{}; }
} bar;
try {
std::tie(foo, bar) = std::make_tuple(42, Bar{});
} catch (std::exception const&) {
std::cout << foo << '\n';
}

它会打印 1337 还是 42,还是未指定?

最佳答案

标准谈到元组赋值艺术 §20.4.2.2 [tuple.assign],唯一提到的异常(exception)是赋值不应抛出,除非分配给抛出的元素之一。

由于没有提及元素分配的顺序,因此未指定

关于c++ - std::tie 的异常安全性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779051/

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