meryngii.neta

今日も新たな"ネタ"を求めて。

conceptでの...

Callableは関数オブジェクト用のコンセプトで、N2741だと汎用的にVariadic Templatesを利用して定義されている。

auto concept Callable<typename F, typename... Args> {
	typename result_type;
	result_type operator()(F&&, Args...);
}

operator()のところだけれども、これが「一定の数の引数を受け取る全ての関数」だということは、Variadic Templatesで定義された「任意の数の引数を受け取る関数」のみを指定することはできないのだろうか。もしかしたら代替案が存在するのかもしれないし、前者⊃後者なら別に必要ないのかもしれない。
※ちなみに、ConceptGCCではまだ実装されていないらしくCallable0, Callable1, ...になっているようだ。