名前空間
変種
操作

std::tuple<Types...>::swap

提供: cppreference.com
< cpp‎ | utility‎ | tuple
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ(C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
 
ヘッダ <tuple> で定義
void swap( tuple& other )noexcept(/* see below */);
(C++11以上)
(C++20未満)
constexprvoid swap( tuple& other )noexcept(/* see below */);
(C++20以上)

*this 内の要素と other 内のそれに対応する要素それぞれに対して swap を呼びます (swapstd::swap かもしれませんし、 ADL によって見つかるものかもしれません)。

目次

[編集]引数

other - 入れ替える値のタプル

[編集]戻り値

(なし)

[編集]例外

noexcept 指定:  
noexcept(

    noexcept(swap(std::declval<T0&>>(), std::declval<T0&>()))&&
    noexcept(swap(std::declval<T1&>>(), std::declval<T1&>()))&&
    noexcept(swap(std::declval<T2&>>(), std::declval<T2&>()))&&
    ...

)

上の式において、識別子 swap は C++17 の std::is_nothrow_swappable 特性で使用されるものと同じ方法で探索されます。

(C++17未満)
noexcept 指定:  
noexcept(

    std::is_nothrow_swappable_v<T0>&&
    std::is_nothrow_swappable_v<T1>&&
    std::is_nothrow_swappable_v<T2>&&
    ...

)
(C++17以上)

[編集]

#include <iostream>#include <tuple>#include <string>   int main(){std::tuple<int, std::string, float> p1, p2; p1 =std::make_tuple(10, "test", 3.14); p2.swap(p1);std::cout<<"("<< std::get<0>(p2)<<", "<< std::get<1>(p2)<<", "<< std::get<2>(p2)<<")\n";}

出力:

(10, test, 3.14)

[編集]欠陥報告

以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。

DR 適用先 発行時の動作 正しい動作
LWG 2456 C++11 the noexcept specification is ill-formed made to work

[編集]関連項目

close