我正在尝试理解新的C ++ 11功能;更具体地说,引用限定符(其中一个)将赋值限制为rvalues。但由于某种原因,我无法使用此代码。当我将A
对象a
分配给左值x
(a = x
)时,会出现错误。
prog.cpp:5:47:错误:
'&'
令牌之前的预期初始化程序 prog.cpp:在函数'int main()'
中:
prog.cpp:15:9:错误:'operator='
中的'a = x'
不匹配 prog.cpp:3:10:注意:候选人是:A& A::operator=(const A&)
struct A {
template <typename T> auto operator = (T) & -> A & {
return *this;
}
};
int main() {
A a;
int x = 4;
a = x;
}
当我取出参考限定符时,代码有效。我能做错什么?
答案 0 :(得分:7)
似乎你在使用GCC。 Ref-qualifiers目前仅由Clang 3.1+支持。你的代码编译得非常好。