Si consideri il seguente codice:Puntatore ai membri delle funzioni: cosa significa `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> {};
Non ho assolutamente idea di cosa (*C::*)
, (**C::*)
, (C::**)
e (C::***)
dire. Vorrei un esempio di test<decltype(f)>
il cui value
sarebbe uguale a 2
, 3
, 4
e 5
. Inoltre, in questo caso, qual'è la sintassi per f
che chiamerebbe la funzione membro?
Grazie! Potresti dare un esempio se 's' ha una funzione membro' int f (int x) {return x;} ', e' testN' si riferisce ad essa, qual è la sintassi per eseguire 'testN' su una variabile? – Vincent
@Vincent, ci stavo arrivando. Un secondo. – chris