9
处理this问题,我发现一个不一致的行为。const引用绑定到右值
为什么引用绑定在构造函数中的行为与通用函数不同?
struct A {
};
struct B : public A {
B(){}
private:
B(const B&);
};
void f(const B& b) {}
int main() {
A a(B()); // works
A const & a2 = B(); // C++0x: works, C++03: fails
f(B()); // C++0x: works, C++03: fails
}
我测试用于C++ 03与克++ - 4.1和科莫4.2.45.2严格C++ 03模式和禁用的C++ 0x扩展。我得到了同样的结果。
对于C++而言,使用g ++ 4.4和Comeau 4.3.9在放宽模式下启用了C++ 0x扩展,对其进行了测试。我得到了同样的结果。
着名的“最令人头痛的解析”。 – earl 2009-08-21 08:47:04
我不能等待那天我可以对某人说“你是最令人头痛的解析问题的受害者”。当然,到那时候,我会完全忘记它,并回到讨厌C++。 – 2010-01-25 20:55:45