Considérez le code suivant:Pointeur vers les membres fonctionnels: que signifie 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> {};
Je n'ai absolument aucune idée de ce que (*C::*)
, (**C::*)
, (C::**)
et (C::***)
moyenne. Je voudrais un exemple d'un test<decltype(f)>
dont value
serait égal à 2
, 3
, 4
et 5
. De plus, dans ce cas, comment est la syntaxe pour f
qui appelle la fonction membre?
Merci! Pourriez-vous donner un exemple si 's' a un membre de fonction' int f (int x) {return x;} ', et' testN' s'y réfère, quelle est la syntaxe pour exécuter 'testN' sur une variable? – Vincent
@Vincent, j'arrivais à ça. Une seconde. – chris