C++, гарантии исключений при перемещающей операции std::list<>::push_back(std::move())?
Рассмотрим следующий код:
std::list<std::unique_ptr<Object>> objects;
std::unique_ptr<Object> object = std::make_unique<Object>();
// Do something with object.
// ...
try
{
objects.push_back(std::move(object));
}
catch (...)
{
// ...
}
Скажите, пожалуйста, что произойдет с object в случае генерации исключения? В официальной документации говорится о том, что objects останется в исходном состоянии, но про object не сказано ни слова. Объект останется в исходном состоянии, окажется пустым или сломанным?