为什么我在“a = x”中得到的错误与operator =不匹配?

时间:2012-10-28 21:28:26

标签: c++ c++11

我正在尝试理解新的C ++ 11功能;更具体地说,引用限定符(其中一个)将赋值限制为rvalues。但由于某种原因,我无法使用此代码。当我将A对象a分配给左值xa = 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;

}

当我取出参考限定符时,代码有效。我能做错什么?

1 个答案:

答案 0 :(得分:7)

似乎你在使用GCC。 Ref-qualifiers目前仅由Clang 3.1+支持。你的代码编译得非常好。