无效初始化'int&'类型的非const引用,是什么原因?

4 c++ reference function post-increment

我有给定的代码,它会收到错误:

错误:从'int'类型的rvalue中无效初始化'int&'类型的非const引用const int b = f(a ++); ^

int f(int& a)
{
    return a;
}

int main() {
    // your code goes here
    int a = 5;
    int b = f(a++);
    std::cout << b << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个错误的原因是什么?

Luc*_*ore 5

您不能将临时绑定到非const引用.

post-increment(a++)递增a并返回带有a旧值的临时值.

你为什么不经过const参考?- 它看起来好像你正在改变函数内部的参数,只是通过值或const引用传递.

如果您正在更改参数,那么您认为行为是什么,考虑到a++已经改变了它?改变是否直观?法律?