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

履歴 編集

function template
<tuple>

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

namespace std {
  template <class... Types>
  void swap(tuple<Types...>& x, tuple<Types...>& y)
    noexcept(noexcept(x.swap(y)));                            // (1) C++11
  template <class... Types>
  constexpr void swap(tuple<Types...>& x, tuple<Types...>& y)
    noexcept(noexcept(x.swap(y)));                            // (1) C++20

  template<class... Types>
  constexpr void swap(const tuple<Types...>& x, 
                      const tuple<Types...>& y) 
    noexcept(see below);                                      // (2) C++23
}

概要

  • (1) : 2つのtupleオブジェクトを入れ替える。
  • (2) : 2つのプロキシ参照であるtupleオブジェクトについて、対応する要素毎に参照先の値を入れ替える。

要件

効果の式に現れている、tuple::swapに準じる。

効果

x.swap(y);

戻り値

なし

例外

効果の式が例外を投げない場合、この関数は決して例外を投げない。

#include <string>
#include <tuple>
#include <cassert>

int main()
{
  std::tuple<int, char, std::string> a(1, 'a', "hello");
  std::tuple<int, char, std::string> b(2, 'b', "good-bye");

  std::swap(a, b);

  assert(a == std::make_tuple(2, 'b', "good-bye"));
  assert(b == std::make_tuple(1, 'a', "hello"));
}

出力

バージョン

言語

  • C++11

処理系

参照