Код: Выделить всё
struct copy_only
{
copy_only() = default;
copy_only(const copy_only&) = default;
copy_only& operator=(const copy_only&) = default;
copy_only(copy_only&&) = delete;
copy_only& operator=(copy_only&&) = delete;
~copy_only() = default;
};
std::vector v;
copy_only c{};
v.push_back(c);
< /code>
на MSVC мы получаем ошибку: < /p>
Ошибка C2280: 'copy_only :: copy_only (copy_only &&)': попытка ссылаться на удаленную функцию < /p>
< /blockquote>
with in vitor vitor vitor vitor vitor vitor vitor vitor with in the obreator < /p>
< /blockquote> push_back (const &) Примечание: при составлении функции члена класса. instantiaiation '_ty & std :: vector :: _ emplace_one_at_back (const _ty &)' составлено < /p>
< /blockquote>
Это компилирован с GCC и Clang. Это просто массивная ошибка компилятора MSVC в простейшем векторном примере? Или есть какая -то стандартная вещь, которая предотвратит это использование, что GCC и Clang просто зацикливаются?
Живой пример.>
Подробнее здесь: https://stackoverflow.com/questions/795 ... ementation