Почему я не могу сделать 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

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