最終更新日時(UTC):
が更新

履歴 編集

function
<variant>

std::swap (非メンバ関数)(C++17)

namespace std {
  template <class... Types>
  void swap(variant<Types...>& x, variant<Types...>& y) noexcept(see below);            // C++17
  template <class... Types>
  constexpr void swap(variant<Types...>& x, variant<Types...>& y) noexcept(see below);  // C++23
}

概要

同じ候補型をもつ2つのvariantオブジェクトを入れ替える。

テンプレートパラメータ制約

効果

以下と等価:

x.swap(y);

戻り値

なし

例外

  • noexcept内の式は、noexcept(x.swap(y))と等価

#include <cassert>
#include <variant>

int main()
{
  std::variant<int, char, double> a = 1;
  std::variant<int, char, double> b = 3.14;

  std::swap(a, b);

  assert(std::holds_alternative<double>(a));
  assert(std::holds_alternative<int>(b));

  assert(std::get<double>(a) == 3.14);
  assert(std::get<int>(b) == 1);
}

出力

バージョン

言語

  • C++17

処理系

参照