2012-10-28 61 views
0

我想了解新的C++ 11功能;更具體地說,引用限定符(其中之一)限制了賦值給右值。但由於某種原因,我無法獲得此代碼的工作。當我將A對象a指定爲左值xa = x)時,出現錯誤。當我把基準預選賽出爲什麼我在'a = x'中得到與operator =不匹配的錯誤?

prog.cpp:5:47: error: expected initializer before '&' token
prog.cpp: In function 'int main()' :
prog.cpp:15:9: error: no match for 'operator=' in 'a = x'
prog.cpp:3:10: note: candidate is: 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

你使用什麼編譯器? – PiotrNycz

回答

7

似乎您正在使用GCC。目前只有Clang 3.1+支持Ref-qualifiers。你的代碼編譯完全正確。

+0

我* * *實際上使用gcc。感謝您的迴應。 –