std::invocable, std::regular_invocable
From cppreference.com
| ヘッダ <concepts> で定義 |
||
| template< class F, class... Args > concept invocable = |
(C++20以降) | |
| template< class F, class... Args > concept regular_invocable = std::invocable<F, Args...>; |
(C++20以降) | |
invocable コンセプトは、呼び出し可能な型 F が、関数テンプレート std::invoke を使用して引数リスト Args... で呼び出せることを指定します。
regular_invocable コンセプトは、invocable コンセプトに加えて、invoke 式が 等価性保存 であり、関数オブジェクトまたは引数を変更しないことを要求します。
目次 |
[編集] 等価性保持
標準ライブラリのコンセプトのrequires式で宣言された式は、(特に明記されていない限り)等価性保持である必要があります。
[編集] 注記
invocable と regular_invocable の区別は純粋に意味論的なものです。
乱数生成器は invocable を満たす可能性がありますが、regular_invocable を満たすことはできません(コミカルな例を除く)。
[編集] 参考文献
- C++23標準 (ISO/IEC 14882:2024)
- 18.7.2 Concept
invocable[concept.invocable]
- 18.7.2 Concept
- 18.7.3 Concept
regular_invocable[concept.regularinvocable]
- 18.7.3 Concept
- C++20 standard (ISO/IEC 14882:2020)
- 18.7.2 Concept
invocable[concept.invocable]
- 18.7.2 Concept
- 18.7.3 Concept
regular_invocable[concept.regularinvocable]
- 18.7.3 Concept
[編集] 関連項目
| ある型が与えられた引数型で(std::invokeのように)呼び出し可能であるかをチェックする (クラステンプレート) |
[編集] 外部リンク
invocable と regular_invocable の両方を満たす乱数生成器の ジョーク例。 |