最終更新日時:
が更新

履歴 編集

<concepts>

Swappable

概要

Swappableは、任意の型Tのオブジェクトと任意の型Uのオブジェクトが入れ替え可能かを表す要件である。

要件

  • tを型Tのオブジェクト、uを型Uのオブジェクトとする
  • 以下が可能である場合にのみ、tuと入れ替え可能(swappable)である:
    • swap(t, u)と式swap(u, t)が、後述する文脈で評価された場合に、有効であり、それに加えて
    • その式が以下の効果を持っていること:
      • オブジェクトtが、変更前のuが保持していた値を持つようになり、
      • オブジェクトuが、変更前のtが保持していた値を持つようになる
  • swap(t, u)swap(u, t)が評価される文脈は、「swap」という名前の、2つのパラメータをとる非メンバ関数が、オーバーロード解決を介して選択されることを保証しなければならない。そのオーバーロードの候補は、以下を含む:
    • <utility>で定義されるswap()関数
    • 引数依存の名前探索によって見つかるswap()関数
  • 右辺値もしくは左辺値のtは、tが右辺値もしくは左辺値と入れ替え可能である場合にのみ入れ替え可能である