Rozważmy następujący kod:Wskaźnik do elementów funkcji: co znaczy "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> {};
mam absolutnie żadnego pojęcia, co (*C::*)
, (**C::*)
, (C::**)
i (C::***)
myśli. Chciałbym przykład test<decltype(f)>
, którego value
będzie równa 2
, 3
, 4
i 5
. A w takim razie, w jaki sposób składnia dla f
wywoła funkcję członka?
Dzięki! Czy mógłby podać przykład, jeśli 's' ma element członkowski' int f (int x) {return x;} ', a' testN' odnosi się do niego, jaka jest składnia do wykonania 'testN' na zmiennej? – Vincent
@Vincent, do tego doszedłem. Sekundę. – chris