首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >std::tie的异常安全性如何?

std::tie的异常安全性如何?
EN

Stack Overflow用户
提问于 2012-12-08 23:49:10
回答 1查看 382关注 0票数 10

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

代码语言:javascript
复制
int foo, bar, baz;
std::tie(foo, bar, baz) = std::make_tuple(1, 2, 3);

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

如果其中一个赋值抛出,会发生什么情况,如下面的示例所示?

代码语言:javascript
复制
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,或者这是未指定的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-09 00:25:27

标准谈到了元组赋值艺术§20.4.2.2 tuple.assign,唯一提到的例外是赋值不应该抛出,除非分配给抛出的元素之一。

由于没有提到元素被分配到的顺序,因此没有指定。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13779051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档