Dlaczego funkcja INVOKE w standardzie C ++ 11 odnosi się do członków danych?
$ 20.8.2 standardu opisuje obiekt INVOKE, który jest najczęściej używany do opisania wywoływania wywołań z listami argumentów zmiennoprzecinkowych w standardowej bibliotece:
Zdefiniuj INVOKE (f, t1, t2, ..., N) w następujący sposób:
— (t1.*f)(t2, ..., tN)
gdy f jest wskaźnikiem do funkcji składowej klasy T, a t1 jest obiektem typu T lub odniesieniem do obiektu typu T lub odniesieniem do obiektu typu wywodzącego się z T;
— ((*t1).*f)(t2, ..., tN)
gdy f jest wskaźnikiem do funkcji składowej klasy T, a t1 nie jest jednym z typów opisanych w poprzednim punkcie;
— t1.*f
gdy N == 1 i f jest wskaźnikiem do danych składowych klasy T, a t1 jest obiektem typu T lub odniesieniem do obiektu typu T lub odniesieniem do obiektu typu wywodzącego się z T;
— (*t1).*f
gdy N == 1 i f jest wskaźnikiem do danych składowych klasy T, a t1 nie jest jednym z typów opisanych w poprzednim punkcie;
— f(t1, t2, ..., tN)
we wszystkich innych przypadkach.
Do czego służy trzecia i czwarta pozycja? O ile wiem, nie dzwoniąf
nawet jeślif
jest na żądanie. Jaka jest dla nich sprawa użytkownika? Może to literówka w standardzie i*f()
był przeznaczony?