std::copyable_function
| ヘッダ <functional> で定義 |
||
| template< class... > class copyable_function; // 未定義 |
(1) | (C++26以降) |
| template< class R, class... Args > class copyable_function<R(Args...)>; |
(2) | (C++26以降) |
クラステンプレートstd::copyable_functionは、汎用的なポリモーフィック関数ラッパーです。std::copyable_functionオブジェクトは、関数、ラムダ式、bind式、またはその他の関数オブジェクト、さらにはメンバー関数へのポインタやメンバーオブジェクトへのポインタなど、あらゆるCopyConstructibleなCallableな*ターゲット*を格納し、呼び出すことができます。
格納されている呼び出し可能なオブジェクトは、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) |
[編集] 非メンバー関数
| (C++26) |
std::swapアルゴリズムをオーバーロードします。 (function) |
| (C++26) |
std::copyable_functionとnullptrを比較します。(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) |
コピー構築可能な任意の呼び出し可能オブジェクトをラップするコピー可能なラッパー (クラステンプレート) |
| (C++23) |
与えられた呼び出しシグネチャで修飾子をサポートする任意の呼び出し可能オブジェクトのムーブ専用ラッパー (クラステンプレート) |
| (C++26) |
任意の呼び出し可能オブジェクトの所有権を持たないラッパー (クラステンプレート) |