C++ 函数应用程序关联到左侧

C++ 函数应用程序关联到左侧,c++,function,syntax,operators,associativity,C++,Function,Syntax,Operators,Associativity,根据,函数应用程序关联到左侧。这是什么意思?当二进制运算符多次出现时,关联性很重要,如在a-b-c中。这与函数应用程序有什么关系?如果函数应用程序与右侧关联,它会有什么不同?类似于X(y)(z)?可以是(X(y))(z)或X((y)(z))?(其中X,X和y的返回值是可调用的)。您误解了该表,函数应用程序关联到左侧,而不是右侧 它在处理返回其他函数的函数时发挥作用 以下是一个重要的例子: #include <iostream> template<typename T>

根据,函数应用程序关联到左侧。这是什么意思?当二进制运算符多次出现时,关联性很重要,如在
a-b-c
中。这与函数应用程序有什么关系?如果函数应用程序与右侧关联,它会有什么不同?

类似于
X(y)(z)
?可以是
(X(y))(z)
X((y)(z))
?(其中
X
X
y
的返回值是可调用的)。

您误解了该表,函数应用程序关联到左侧,而不是右侧

它在处理返回其他函数的函数时发挥作用

以下是一个重要的例子:

#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));
}

函数调用是左关联的。这是后缀运算符比一元运算符优先级更高的另一种说法。

根据表,它是“从左到右”,我会说这意味着它“向左关联”。@sftrabbit应用程序不是一元运算符。它是一个二进制操作,lhs是一个函数,rhs是参数元组。
left associative:
1
2
right associative:
2