C++ named requirements: CustomizationPointObject (since C++20)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
カスタマイゼーションポイントオブジェクト
は、ステートレスな
関数オブジェクト
であり、
リテラル
semiregular
クラス型を持つ。
同じクラス型のすべてのカスタマイゼーションポイントオブジェクトは等価です。その型の異なるインスタンスを同じ引数で呼び出した効果は、インスタンスを表す式が左辺値か右辺値か、const修飾されているかどうかに関わらず等価です。ただし、volatile修飾されたインスタンスは呼び出し可能である必要はありません。したがって、カスタマイゼーションポイントオブジェクトは自由にコピーでき、コピーは互換的に使用できます。
Fn
をカスタマイゼーションポイントオブジェクトの型とし、
Args...
を型の集合とする。
std::
declval
<
Args
>
(
)
...
が
Fn
の引数に対する要件を満たす場合、
Fn
はモデル化される
- std:: invocable < Fn, Args... > 、
- std:: invocable < const Fn, Args... > 、
- std:: invocable < Fn & , Args... > 、および
-
std::
invocable
<
const
Fn
&
, Args...
>
。
それ以外の場合、
Fn
の関数呼び出し演算子はオーバーロード解決に参加しません。