我正在尝试了解新的 C++ 11 功能;更具体地说,引用限定符(其中之一)将赋值限制为右值。但由于某种原因,我无法让这段代码工作。当我将A
对象分配a
给左值x
(a = x
)时,会出现错误。
prog.cpp:5:47:错误:
'&'
令牌
prog.cpp 之前的预期初始化程序:在函数中'int main()'
: prog.cpp:15:9:错误:在prog.cpp:3:10 中
不匹配 :注意:候选人是:'operator='
'a = x'
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;
}
当我取出参考限定符时,代码有效。我可能做错了什么?