Учитывая эту цитату из en.cppreference.com относительно std::vector::emplace_back
"Добавляет новый элемент в конец контейнера. построенный на месте, то есть операции копирования или перемещения не выполняются. Конструктор элемента называется точно таким же аргументы, которые предоставляются функции."
и следующий образец:
#include <vector>
struct A
{
A(int){}
A(A const&) = delete;
};
int main()
{
std::vector<A> vec;
vec.emplace_back(1);
return 0;
}
В строке vec.emplace_back(1);
Отчет Visual Studio 2013/GCC:
ошибка C2280: 'A:: A (const A &)': попытка ссылки на удаленную функцию
ошибка: использование удаленной функции "A:: A (const A &)
Правильно ли ошибка? Можете ли вы объяснить мне, почему?