は、次のコードを考えてみましょう:関数メンバーへのポインタ: `R(* C :: *)(Args ...)`はどういう意味ですか?
template <class>
struct test: std::integral_constant<int, 0> {};
template<class R, class C, class... Args>
struct test<R(C::*)(Args...)>: std::integral_constant<int, 1> {};
template<class R, class C, class... Args>
struct test<R(*C::*)(Args...)>: std::integral_constant<int, 2> {};
template<class R, class C, class... Args>
struct test<R(**C::*)(Args...)>: std::integral_constant<int, 3> {};
template<class R, class C, class... Args>
struct test<R(C::**)(Args...)>: std::integral_constant<int, 4> {};
template<class R, class C, class... Args>
struct test<R(C::***)(Args...)>: std::integral_constant<int, 5> {};
私が何を意味するか(*C::*)
、(**C::*)
、(C::**)
と(C::***)
の絶対にないアイデアを持っていません。私はtest<decltype(f)>
の例を望んでおり、そのうちvalue
は2
,3
,4
および5
に等しくなります。さらに、その場合、メンバー関数を呼び出すf
の構文はどのようになっていますか?
ありがとうございました!もし 's'が関数メンバ' int f(int x){return x;} 'を持っていて、' testN'がそれを参照していれば、変数に 'testN'を実行する構文は何ですか? – Vincent
@Vincent、私はそれに着きました。一秒。 – chris