Почему я не могу сделать emplace_back (...) вместо push_back ({...})? [дублировать]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему я не могу сделать emplace_back (...) вместо push_back ({...})? [дублировать]

Сообщение Anonymous »

Я подумал, что смысл emplace_back заключалась в том, чтобы направить аргументы конструктору вместо создания временного объекта, но здесь он дает мне длинную неприятную ошибку компилятора, которую я не могу интерпретировать, тогда как push_back работает нормально:

Код: Выделить всё

#include 
int main() {
struct A{ int x; int y; };
std::vector v;
//v.emplace_back(1, 2);
v.push_back({1, 2});
return 0;
}
Почему я не могу использовать emplace_back , когда существует соответствующий конструктор для предоставленных аргументов?
(с помощью C ++ 17)

Подробнее здесь: https://stackoverflow.com/questions/796 ... -push-back
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»