在线文档教程
C++
应用 | Utilities

std::variant::swap

STD::变体::SWAP

void swap( variant& rhs ) noexcept(/* see below */(1)(since C++17)

掉期二variant物品。

  • 如果两者都是*thisrhs例外而毫无价值,什么也不做

  • 否则,如果两者兼而有之*this和rhs保持同样的选择,呼叫swap(std::get<i>(*this), std:get<i>(rhs))何地i是index()如果抛出异常,则值的状态取决于调用的交换函数的异常安全性。

  • 否则,交换rhs*this如果引发异常,则*thisrhs取决于变量%27s移动构造函数的异常安全。

除非类型为lvalue,否则行为是未定义的。T_i是Swappable和std::is_move_constructible_v<T_i>是true为所有人T_i在Types......

参数

rhs-a variant object to swap with

返回值

%280%29

例外

如果this->index() == rhs.index(),则可能引发任何异常。swap(std::get<i>(*this), std::get<i>(rhs))我是索引%28%29。

否则,可能引发当前持有的选项的移动构造函数引发的任何异常。*thisrhs...

noexcept规格:

noexcept(((std::is_nothrow_move_constructible_v<Types>&&

std::is_nothrow_swappable_v<Types>)&& ...))

© cppreference.com

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

http://en.cppreference.com/w/cpp/实用程序/变量/交换