最終更新日時: 2026年04月09日 08時58分08秒 (JST)
Akira Takahashi が更新

履歴 編集

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

### 処理系

- Clang: 3.0 ✅
- GCC: 4.3 ✅
- ICC: ??
- Visual C++: ??

## 参照

- P1032R1 Misc constexpr bits