В соответствии с этот стол, Приложение функции ассоциируется слева. Что это значит? Ассоциативность важна, когда бинарный оператор появляется несколько раз, как в a - b - c
, Какое это имеет отношение к применению функции? Как бы отличалось приложение функции, если бы оно ассоциировалось справа?
Вы неправильно поняли эту таблицу, приложение функции ассоциируется слева, а не справа.
Он вступает в игру при работе с функциями, которые возвращают другие функции.
Вот пример, где это имеет значение:
#include <iostream>
template<typename T>
T id_1(T t) {
t(1);
return t;
}
typedef void (*func)(int);
void nothing(int x) {}
func print(int x) {
std::cout << x << std::endl;
return nothing;
}
int main() {
std::cout << "left associative:\n";
id_1(print)(2);
std::cout << "right associative:\n";
id_1((print)(2));
}
Выход
left associative:
1
2
right associative:
2
Что-то вроде X(y)(z)
? Может быть (X(y))(z)
или же X((y)(z))
? (где X
, возвращаемое значение X
а также y
вызываемые).
Вызов функции является левоассоциативным. Это еще один способ сказать, что постфиксные операторы имеют более высокий приоритет, чем унарные операторы.