0

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

}

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

4

1 回答 1

7

看来您正在使用 GCC。目前仅 Clang 3.1+ 支持 Ref-qualifiers。你的代码编译得很好。

于 2012-10-28T21:37:48.110 回答