名前空間
変種
操作

std::copyable_function

From cppreference.com
< cpp‎ | utility‎ | functional
 
 
ユーティリティライブラリ
言語サポート
型のサポート (基本型、RTTI)
ライブラリ機能検査マクロ (C++20)
プログラムユーティリティ
可変引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
 
関数オブジェクト
関数ラッパー
(C++11)
copyable_function
(C++26)
(C++11)
関数の呼び出し
(C++17)(C++23)
恒等関数オブジェクト
(C++20)
透過的な演算子ラッパー
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

古いバインダとアダプタ
(C++17まで*)
(C++17まで*)
(C++17まで*)
(C++17まで*)  
(C++17まで*)
(C++17*まで)(C++17*まで)(C++17*まで)(C++17*まで)
(C++20まで*)
(C++20まで*)
(C++17*まで)(C++17*まで)
(C++17*まで)(C++17*まで)

(C++17まで*)
(C++17*まで)(C++17*まで)(C++17*まで)(C++17*まで)
(C++20まで*)
(C++20まで*)
 
 
ヘッダ <functional> で定義
template< class... >
class copyable_function; // 未定義
(1) (C++26以降)
template< class R, class... Args >

class copyable_function<R(Args...)>;
template< class R, class... Args >
class copyable_function<R(Args...) noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) &>;
template< class R, class... Args >
class copyable_function<R(Args...) & noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) &&>;
template< class R, class... Args >
class copyable_function<R(Args...) && noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const>;
template< class R, class... Args >
class copyable_function<R(Args...) const noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const &>;
template< class R, class... Args >
class copyable_function<R(Args...) const & noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const &&>;
template< class R, class... Args >

class copyable_function<R(Args...) const && noexcept>;
(2) (C++26以降)

クラステンプレートstd::copyable_functionは、汎用的なポリモーフィック関数ラッパーです。std::copyable_functionオブジェクトは、関数、ラムダ式bind式、またはその他の関数オブジェクト、さらにはメンバー関数へのポインタやメンバーオブジェクトへのポインタなど、あらゆるCopyConstructibleCallableな*ターゲット*を格納し、呼び出すことができます。

格納されている呼び出し可能なオブジェクトは、std::copyable_functionの*ターゲット*と呼ばれます。std::copyable_functionがターゲットを含まない場合、それは*空*と呼ばれます。std::functionとは異なり、*空*のstd::copyable_functionを呼び出すと、未定義の動作が発生します。

std::copyable_functionは、テンプレートパラメータで提供されるcv修飾子volatileを除く)、参照修飾子、およびnoexcept指定子のすべての可能な組み合わせをサポートします。これらの修飾子と指定子(もしあれば)は、そのoperator()に追加されます。

std::copyable_functionは、CopyConstructibleおよびCopyAssignableの要件を満たします。

目次

[編集] メンバー型

定義
result_type R

[編集] メンバー関数

新しいstd::copyable_functionオブジェクトを構築します。
(public member function) [編集]
std::copyable_functionオブジェクトを破棄します。
(public member function) [編集]
ターゲットを置き換えるか破棄する
(public member function) [編集]
2つのstd::copyable_functionオブジェクトのターゲットを交換します。
(public member function) [編集]
std::copyable_functionがターゲットを持っているかどうかをチェックします。
(public member function) [編集]
ターゲットを呼び出す
(public member function) [編集]

[編集] 非メンバー関数

std::swapアルゴリズムをオーバーロードします。
(function) [編集]
std::copyable_functionnullptrを比較します。
(function) [編集]

[編集] 注釈

実装では、`std::copyable_function`オブジェクト内に小さなサイズの呼び出し可能オブジェクトを格納する場合があります。このような小さなオブジェクト最適化は、関数ポインタおよびstd::reference_wrapperの特殊化に対して実質的に必要とされ、std::is_nothrow_move_constructible_v<T>trueである型Tにのみ適用できます。

機能テストマクロ 規格 機能
__cpp_lib_copyable_function 202306L (C++26) std::copyable_function

[編集]

[編集] 関連項目

(C++11)
コピー構築可能な任意の呼び出し可能オブジェクトをラップするコピー可能なラッパー
(クラステンプレート) [編集]
与えられた呼び出しシグネチャで修飾子をサポートする任意の呼び出し可能オブジェクトのムーブ専用ラッパー
(クラステンプレート) [編集]
任意の呼び出し可能オブジェクトの所有権を持たないラッパー
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)