C++
应用 | Utilities

std::variant::valueless_by_exception

STD::变体::无价值[医]通过[医]例外

constexpr bool valueless_by_exception() const;(since C++17)

回报false当且仅当变体持有一个值。

例外

noexcept规格:

noexcept

注记

在下列情况下,变体可能变得毫无价值:

  • %28有保证的%29在从临时的复制分配

  • 中包含的值的移动初始化期间抛出异常。移动分配

  • %28%29在类型更改期间初始化包含的值时引发异常。赋值

  • %28%29在类型更改期间初始化包含的值时引发异常。座落

由于从来不允许变量分配动态内存,因此在这种情况下不能保留以前的值。

这甚至适用于非类类型的变体:

二次

struct S { operator int() { throw 42; } }; variant<float, int> v{12.f}; // OK v.emplace<1>(S() // v may be valueless

二次

由于异常而没有价值的变体被视为处于无效状态:指数回报变体[医]非营利组织,,,弄到和参观抛出坏[医]变体[医]存取...

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/实用程序/变量/无价值[医]通过[医]例外