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

履歴 編集

function
<tuple>

# std::tuple::swap(C++11)

    void swap(tuple& rhs) noexcept(see below);           // (1) C++11
    constexpr void swap(tuple& rhs) noexcept(see below); // (1) C++20

    constexpr void
      swap(const tuple& rhs) const noexcept(see below);  // (2) C++23

## 概要

- (1) : 他の`tuple`オブジェクトと中身を入れ替える。
- (2) : プロキシ参照である`tuple`同士で、参照先の値を入れ替える。

## 要件

- (1) : `tuple`の全ての要素型が`swap`可能であること。
- (2) : C++23 : `(is_swappable_v<const Types> && ...) == true`であること。

## 効果

- (1) : 自身のインスタンスの全ての要素を、`rhs`の全ての要素と入れ替える
- (2) : 自身のインスタンスの各要素の参照先の値と、他のプロキシ参照な`tuple`の各要素の参照先の値とを入れ替える。

## 戻り値

なし

## 例外

- (1) : `tuple`の全ての要素型が、例外を投げない`swap`を持っている場合、この関数は例外を投げない
- (2) : C++23 : `(is_nothrow_swappable_v<const Types> && ...) == true`であること。

## 例

    #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");

      a.swap(b);

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

### 出力

## バージョン

### 言語

- C++11

### 処理系

- Clang:
- GCC: 4.6.1 ✅
- ICC:
- Visual C++:

## 参照

- P1032R1 Misc constexpr bits
- P2321R2 `zip`