为什么在';a=x';? 我试图理解C++ 11的新特性;更具体地说,引用限定符(其中之一)将赋值限制在右值上。但由于某种原因,我无法让这个代码工作。当我将A对象A分配给左值x(A=x)时,会出现错误

为什么在';a=x';? 我试图理解C++ 11的新特性;更具体地说,引用限定符(其中之一)将赋值限制在右值上。但由于某种原因,我无法让这个代码工作。当我将A对象A分配给左值x(A=x)时,会出现错误,c++,c++11,C++,C++11,程序cpp:5:47:错误:应在'&标记之前使用初始值设定项 prog.cpp:在函数'int main()': 程序cpp:15:9:错误:在'a=x' 程序cpp:3:10:注:候选人是:A&A::operator=(常数A&) 结构A{ 模板自动运算符=(T)&->A&{ 归还*这个; } }; int main(){ A A; int x=4; a=x; } 当我取出引用限定符时,代码就起作用了。我可能做错了什么?似乎您正在使用GCC。Ref限定符目前仅由Clang 3.1+支持。您的

程序cpp:5:47:错误:应在
'&
标记之前使用初始值设定项
prog.cpp:在函数
'int main()'

程序cpp:15:9:错误:在
'a=x'

程序cpp:3:10:注:候选人是:
A&A::operator=(常数A&)

结构A{ 模板自动运算符=(T)&->A&{ 归还*这个; } }; int main(){ A A; int x=4; a=x; }
当我取出引用限定符时,代码就起作用了。我可能做错了什么?

似乎您正在使用GCC。Ref限定符目前仅由Clang 3.1+支持。您的代码编译起来非常好。

事实上,我正在使用gcc。谢谢你的回复。
struct A {

   template <typename T> auto operator = (T) & -> A & {
       return *this;
   }

};

int main() {

   A a;

   int x = 4;

   a = x;

}