名前空間
変種
操作

標準ライブラリヘッダ <utility>

提供: cppreference.com
< cpp‎ | header
 
 
 

このヘッダは汎用ユーティリティライブラリの一部です。

目次

インクルード

(C++20)
三方比較演算子サポート [edit]
std::initializer_list クラステンプレート [edit]

名前空間

rel_ops 自動的に比較演算子を提供します
名前空間 std::rel_ops で定義
ユーザ定義の operator== および operator< を元に比較演算子を自動生成します
(関数テンプレート)[edit]

関数

2つのオブジェクトの値を入れ替えます
(関数テンプレート)[edit]
(C++14)
引数を新しい値で置き換え、その以前の値を返します
(関数テンプレート)[edit]
(C++11)
関数の引数を転送します
(関数テンプレート)[edit]
(C++11)
右辺値参照を取得します
(関数テンプレート)[edit]
ムーブコンストラクタが例外を投げない場合、右辺値参照を取得します
(関数テンプレート)[edit]
(C++17)
引数への const な参照を取得します
(関数テンプレート)[edit]
(C++11)
未評価文脈で使用するための引数への参照を取得します
(関数テンプレート)[edit]
変換による値の変更なしに2つの整数値を比較します
(関数テンプレート)[edit]
(C++20)
整数値が指定した整数型の範囲内かどうか調べます
(関数テンプレート)[edit]
引数の型によって定義された型の pair オブジェクトを作成します
(関数テンプレート)[edit]
(C++20で削除)(C++20で削除)(C++20で削除)(C++20で削除)(C++20で削除)(C++20)
ペア内の値を辞書的に比較します
(関数テンプレート)[edit]
std::swap アルゴリズムの特殊化
(関数テンプレート)[edit]
pair の要素にアクセスします
(関数テンプレート)[edit]

クラス

2つ組、つまり2つの値のペアを実装します
(クラステンプレート)[edit]
コンパイル時整数列を実装します
(クラステンプレート)[edit]
前方宣言
ヘッダ <tuple> で定義
(C++11)
異なる型の混在できる複数の要素を格納する固定サイズのコンテナを実装します
(クラステンプレート)[edit]

ヘルパー

区分的構築用の関数オーバーロードを正しく選択するために使用されるタグ型
(クラス)[edit]
区分的構築用の関数を曖昧さなく選択するために使用される piecewise_construct_t 型のオブジェクト
(定数)[edit]
その場構築のタグ
(クラステンプレート)[edit]

[編集]概要

#include <compare>#include <initializer_list>   namespace std {// swaptemplate<class T>constexprvoid swap(T& a, T& b)noexcept(/* see description */);template<class T, size_t N>constexprvoid swap(T (&a)[N], T (&b)[N])noexcept(is_nothrow_swappable_v<T>);   // exchangetemplate<class T, class U = T>constexpr T exchange(T& obj, U&& new_val);   // forward/movetemplate<class T>constexpr T&& forward(remove_reference_t<T>& t)noexcept;template<class T>constexpr T&& forward(remove_reference_t<T>&& t)noexcept;template<class T>constexpr remove_reference_t<T>&& move(T&&)noexcept;template<class T>constexpr conditional_t<!is_nothrow_move_constructible_v<T>&& is_copy_constructible_v<T>, const T&, T&&> move_if_noexcept(T& x)noexcept;   // as_consttemplate<class T>constexpr add_const_t<T>& as_const(T& t)noexcept;template<class T>void as_const(const T&&)= delete;   // declvaltemplate<class T> add_rvalue_reference_t<T> declval()noexcept;// as unevaluated operand   // integer comparison functionstemplate<class T, class U>constexprbool cmp_equal(T t, U u)noexcept;template<class T, class U>constexprbool cmp_not_equal(T t, U u)noexcept;   template<class T, class U>constexprbool cmp_less(T t, U u)noexcept;template<class T, class U>constexprbool cmp_greater(T t, U u)noexcept;template<class T, class U>constexprbool cmp_less_equal(T t, U u)noexcept;template<class T, class U>constexprbool cmp_greater_equal(T t, U u)noexcept;   template<class R, class T>constexprbool in_range(T t)noexcept;   // compile-time integer sequencestemplate<class T, T...>struct integer_sequence;template<size_t... I>using index_­sequence = integer_sequence<size_t, I...>;   template<class T, T N>using make_integer_sequence = integer_sequence<T, /* see description */>;template<size_t N>using make_index_sequence = make_integer_sequence<size_t, N>;   template<class... T>using index_sequence_for = make_index_sequence<sizeof...(T)>;   // class template pairtemplate<class T1, class T2>struct pair;   // pair specialized algorithmstemplate<class T1, class T2>constexprbool operator==(const pair<T1, T2>&, const pair<T1, T2>&);template<class T1, class T2>constexpr common_comparison_category_t</*synth-three-way-result*/<T1>, /*synth-three-way-result*/<T2>> operator<=>(const pair<T1, T2>&, const pair<T1, T2>&);   template<class T1, class T2>constexprvoid swap(pair<T1, T2>& x, pair<T1, T2>& y)noexcept(noexcept(x.swap(y)));   template<class T1, class T2>constexpr/* see description */ make_pair(T1&&, T2&&);   // tuple-like access to pairtemplate<class T>struct tuple_size;template<size_t I, class T>struct tuple_element;   template<class T1, class T2>struct tuple_size<pair<T1, T2>>;template<size_t I, class T1, class T2>struct tuple_element<I, pair<T1, T2>>;   template<size_t I, class T1, class T2>constexpr tuple_element_t<I, pair<T1, T2>>& get(pair<T1, T2>&)noexcept;template<size_t I, class T1, class T2>constexpr tuple_element_t<I, pair<T1, T2>>&& get(pair<T1, T2>&&)noexcept;template<size_t I, class T1, class T2>constexprconst tuple_element_t<I, pair<T1, T2>>& get(const pair<T1, T2>&)noexcept;template<size_t I, class T1, class T2>constexprconst tuple_element_t<I, pair<T1, T2>>&& get(const pair<T1, T2>&&)noexcept;template<class T1, class T2>constexpr T1& get(pair<T1, T2>& p)noexcept;template<class T1, class T2>constexprconst T1& get(const pair<T1, T2>& p)noexcept;template<class T1, class T2>constexpr T1&& get(pair<T1, T2>&& p)noexcept;template<class T1, class T2>constexprconst T1&& get(const pair<T1, T2>&& p)noexcept;template<class T2, class T1>constexpr T2& get(pair<T1, T2>& p)noexcept;template<class T2, class T1>constexprconst T2& get(const pair<T1, T2>& p)noexcept;template<class T2, class T1>constexpr T2&& get(pair<T1, T2>&& p)noexcept;template<class T2, class T1>constexprconst T2&& get(const pair<T1, T2>&& p)noexcept;   // pair piecewise constructionstruct piecewise_construct_t {explicit piecewise_construct_t()=default;};inlineconstexpr piecewise_construct_t piecewise_construct{};template<class... Types>class tuple;// defined in <tuple>   // in-place constructionstruct in_place_t {explicit in_place_t()=default;};inlineconstexpr in_place_t in_place{};   template<class T>struct in_place_type_t {explicit in_place_type_t()=default;};template<class T>inlineconstexpr in_place_type_t<T> in_place_type{};   template<size_t I>struct in_place_index_t {explicit in_place_index_t()=default;};template<size_t I>inlineconstexpr in_place_index_t<I> in_place_index{};}   // deprecatednamespace std::rel_ops{template<class T>bool operator!=(const T&, const T&);template<class T>bool operator>(const T&, const T&);template<class T>bool operator<=(const T&, const T&);template<class T>bool operator>=(const T&, const T&);}

[編集]クラステンプレート std::integer_sequence

namespace std {template<class T, T... I>struct integer_sequence {using value_type = T;staticconstexpr size_t size()noexcept{return sizeof...(I);}};}

[編集]クラステンプレート std::pair

namespace std {template<class T1, class T2>struct pair {using first_type = T1;using second_type = T2;   T1 first; T2 second;   pair(const pair&)=default; pair(pair&&)=default;constexprexplicit(/* see description */) pair();constexprexplicit(/* see description */) pair(const T1& x, const T2& y);template<class U1, class U2>constexprexplicit(/* see description */) pair(U1&& x, U2&& y);template<class U1, class U2>constexprexplicit(/* see description */) pair(const pair<U1, U2>& p);template<class U1, class U2>constexprexplicit(/* see description */) pair(pair<U1, U2>&& p);template<class... Args1, class... Args2>constexpr pair(piecewise_construct_t, tuple<Args1...> first_args, tuple<Args2...> second_args);   constexpr pair& operator=(const pair& p);template<class U1, class U2>constexpr pair& operator=(const pair<U1, U2>& p);constexpr pair& operator=(pair&& p)noexcept(/* see description */);template<class U1, class U2>constexpr pair& operator=(pair<U1, U2>&& p);   constexprvoid swap(pair& p)noexcept(/* see description */);};   template<class T1, class T2> pair(T1, T2)-> pair<T1, T2>;}

[編集]関連項目

(C++11)
std::tuple クラステンプレート [edit]
ユーティリティライブラリ
close