Почему средство INVOKE в стандарте C ++ 11 относится к элементам данных?
$ 20.8.2 стандарта описывает средство INVOKE, которое в основном используется для описания того, как вызываемые вызовы вызываются списками аргументов с переменным числом по всей стандартной библиотеке:
Определите INVOKE (f, t1, t2, ..., tN) следующим образом:
(t1.*f)(t2, ..., tN)
когда f является указателем на функцию-член класса T и t1 является объектом типа T или ссылкой на объект типа T или ссылкой на объект типа, производного от T; -
((*t1).*f)(t2, ..., tN)
когда f является указателем на функцию-член класса T и t1 не является одним из типов, описанных в предыдущем пункте;
t1.*f
когда N == 1 и f - указатель на данные члена класса T, а t1 - объект типа T или ссылка на объект типа T или ссылка на объект типа, производного от T; -
(*t1).*f
когда N == 1 и f - указатель на данные члена класса T, а t1 не относится к типам, описанным в предыдущем пункте;
f(t1, t2, ..., tN)
во всех остальных случаях.
Для чего нужен третий и четвертый пункт? Насколько я могу судить, они нет звонокf
даже еслиf
вызывается. Какие'S пользовательский случай для них. Может быть это'опечатка в стандарте и*f()
был предназначен?