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?

questionAnswers(1)

yourAnswerToTheQuestion