我想从http://code.google.com/p/enhsim编译以下代码行:
enh::eout << enh::setw(26);
GCC 给出以下错误:
error: no match for operator<< in enh::eout << enh::setw(26)
但是,EnhSimOutput
类(其中enh :: eout
是一个实例)确实声明:
EnhSimOutput& operator<< (setw& p);
如果我实现一个接受对象值的版本,这个问题就会解决:
EnhSimOutput& operator<< (setw p);
如果我将enh::setw
对象创建为局部的,即:
enh::setw wValue(26);
enh::eout << wValue;
我的问题是:为什么GCC首选不是“按引用”版本的运算符?
编写这些代码的开发人员明显做到了编译,但默认的gcc拒绝这样做。为什么在单独声明为局部变量和内联创建的局部变量之间会有差异?