0

私は新しいC++11の機能を理解しようとしています。より具体的には、参照修飾子(そのうちの1つ)は、割り当てを右辺値に制限します。しかし、何らかの理由で、このコードを機能させることができません。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;

}

参照修飾子を削除すると、コードは機能します。何が間違っているのでしょうか?

4

1 に答える 1

7

GCCを使用しているようです。Ref-qualifiersは現在、Clang3.1以降でのみサポートされています。あなたのコードはそれで完全にうまくコンパイルされます。

于 2012-10-28T21:37:48.110 に答える