[C++] move assignment operator const argument
Или, например, что такое const A&&?
В сторонней программе баг, не имеет смысла такое объявление.
А что такое const rvalue?Я не могу ответить на этот вопрос, потому что не понимаю.
Здесь говорится, что оператор может принимать на вход параметр типа const T&&. Возможно, кто-то сможет пояснить, что тут имеется в виду?
Я хотел бы разобраться с вопросом. Вероятно, это прольёт свет на то, почему стороннее приложение ведёт себя таким образом.
похоже, что компилятору не нравится const в аргументе оператора присваивания. Он не понимает, почему, собственно, этот самый аргумент ( rvalue ) должен быть const
Убрав const, ты ничего не потеряешь
P.S: давно плюсы не видел
msvс:
Error 1 error C2610: 'A::A(A &&)' : is not a special member function which can be defaulted
Error 2 error C2610: 'A &A::operator =(const A &&)' : is not a special member function which can be defaulted
Тут пишут, что
Visual Studio does not support defaulted move constructors or move-assignment operators as the C++11 standard mandates.То есть Visual Studio вообще откажется реализовать default функциональность. Константность rvalue тут ни при чём.
clang:
a.cc:7:6: error: the parameter for an explicitly-defaulted move assignment operator may not be constВопрос, кстати, остаётся. Какой случай имеют в виду cppreference, когда подразумевают const rvalue входным аргуметом.
A& operator=(const A&& other) = default;
visual studio 2012 вообще не понимает default, на ней проверять бесполезно.
синтаксически он есть, но смысла в нем 0.
поэтому можно сделать вывод, что кодогенератор содержит в себе ошибку, и все эти (const A&&) надо заменить на (A&&)
Оставить комментарий
kataich
Я использую стороннюю программу, которая генерирует заголовочные файлы.При попытке использовать заголовки получаю ошибку. Вот модельный пример:
Не могли бы вы, пожалуйста, пояснить, в чём тут суть?
Почему default и const rvalue отказываются дружить.