我已经调试了一段时间的程序,最终发现错误是由于引用没有像我想象的那样更新。
这是一个显示我遇到的问题的示例:
#include <iostream>
using namespace std;
struct Test {
Test& set(int& i){ i = 10; return *this; }
Test& print(const int& i){ cout << i << endl; return *this; }
};
int main(void){
int i = 0;
Test t;
t.set(i).print(i + 5);
return 0;
}
我原以为这里的 print() 方法会输出 15,但结果却是 5。
编辑: 10 天后,我才意识到用 clang 输出 15!这是 GCC 中的错误吗?