Сообщение 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&)’