Информация об изменениях

Сообщение initializer_list - убийца move семантики от 22.10.2018 21:03

Изменено 22.10.2018 21:04 rg45

initializer_list - убийца move семантики
Будьте осмотрительны, используя initializer_list для инициализации. Помните, его элементы всегда копируются, а не перемещаются, даже когда вы наполняете его rvalue значениями:

struct MovableNonCopyable
{
  MovableNonCopyable() = default;
  MovableNonCopyable(MovableNonCopyable&&) = default;
};
// . . . 
std::vector<MovableNonCopyable> v = { MovableNonCopyable(), MovableNonCopyable(), MovableNonCopyable() };
// error: use of deleted function ‘constexpr MovableNonCopyable::MovableNonCopyable(const MovableNonCopyable&)’
initializer_list - убийца move семантики
Будьте осмотрительны, используя initializer_list для инициализации. Помните, его элементы всегда копируются, а не перемещаются, даже когда вы наполняете его rvalue значениями:

struct MovableNonCopyable
{
  MovableNonCopyable() = default;
  MovableNonCopyable(MovableNonCopyable&&) = default;
};
// . . . 
std::vector<MovableNonCopyable> v { MovableNonCopyable(), MovableNonCopyable(), MovableNonCopyable() };
// error: use of deleted function ‘constexpr MovableNonCopyable::MovableNonCopyable(const MovableNonCopyable&)’