最終更新日時: 2026年07月23日 11時38分31秒 (JST)
Raclamusi が更新

履歴 編集

function
<memory>

# std::indirect::swap (非メンバ関数)(C++26)

    friend constexpr void swap(indirect& lhs, indirect& rhs) noexcept(see below);

## 概要

2つの`indirect`オブジェクトを交換する。Hidden friendsとして定義される。

## 効果

`lhs.swap(rhs)`と等価。

## 例外

以下と等価な`noexcept`指定を持つ：

    noexcept(noexcept(lhs.swap(rhs)))

## 例

    #include <cassert>
    #include <memory>

    int main()
    {
      std::indirect<int> a{1};
      std::indirect<int> b{2};
      swap(a, b);   // ADLにより非メンバswapが呼ばれる
      assert(*a == 2 && *b == 1);
    }

### 出力

## バージョン

### 言語

- C++26

### 処理系

- Clang: 22 ❌
- GCC: 16.1 ✅
- Visual C++: 2026 Update 2 ❌

## 関連項目

- `std::indirect`

## 参照

- P3019R14 `indirect` and `polymorphic`: Vocabulary Types for Composite Class Design