Сообщение Re: проблема с move семантикой от 28.08.2018 6:39
Изменено 28.08.2018 6:57 wander
Re: проблема с move семантикой
Здравствуйте, Vinick, Вы писали:
V> auto op = Op<decltype(d)>(std::move(d));
V>....
V>....
V>....
V> auto gop = Op<decltype(g)>(std::move(g));
V>....
Здесь в шаблон уходит ссылка. Т.е. эти gop и op хранят ссылки, а не объекты. Естественно привязанные к ним объекты дохнут и ты получаешь проблему.
ИМХО, перестарался с автовыводом типов.
V> auto op = Op<decltype(d)>(std::move(d));
V>....
V>....
V>....
V> auto gop = Op<decltype(g)>(std::move(g));
V>....
Здесь в шаблон уходит ссылка. Т.е. эти gop и op хранят ссылки, а не объекты. Естественно привязанные к ним объекты дохнут и ты получаешь проблему.
ИМХО, перестарался с автовыводом типов.
Re: проблема с move семантикой
Здравствуйте, Vinick, Вы писали:
V> auto op = Op<decltype(d)>(std::move(d));
V>....
V>....
V>....
V> auto gop = Op<decltype(g)>(std::move(g));
V>....
Здесь в шаблон уходит ссылка. Т.е. эти gop и op хранят ссылки, а не объекты. Естественно привязанные к ним объекты дохнут и ты получаешь проблему.
ИМХО, перестарался с автовыводом типов.
Добавление в Op std::remove_reference_t<D> решает проблему.
V> auto op = Op<decltype(d)>(std::move(d));
V>....
V>....
V>....
V> auto gop = Op<decltype(g)>(std::move(g));
V>....
Здесь в шаблон уходит ссылка. Т.е. эти gop и op хранят ссылки, а не объекты. Естественно привязанные к ним объекты дохнут и ты получаешь проблему.
ИМХО, перестарался с автовыводом типов.
Добавление в Op std::remove_reference_t<D> решает проблему.