но, вообще, пока от него больше вреда чем пользы gcc его вполне сносно поддерживает, но ms compiler, даже последние апдейты, достаточно посредственно, причем, в достаточно неожиданных местах (типа вот этих вот variadic templates)
разработчики стараются понатыкать лямбд куда ни попадя, везде мешанина из старого кода с boost::shared_ptr и прочего с новым кодом с std::shared_ptr auto умудряется снижать читабельность кода :)
в итоге, мы попробовали на одном проекте, но очевидных плюсов лично я не увидел совсем новые проекты, как компиляторы допилят, вполне вероятно будет удобно на С++ сразу писать, в старых же пока удобнее все то же самое делать через boost
Я б называл reincarnation случай, когда обходятся без деструктора, что-нибудь типа new (&obj) T(std::move(obj), args...) а модифицирующий move-конструктор проверяет на равенство адреса первого аргумента и this.
Ну что, красиво, взял любой объект, и in-place его перестроил. Только слегка confusing, довольно часто мы в больших системах закладываем логику, которая полагает, что у объекта есть life-cycle. А тут, на те, генной инженерией обновили внутренности. :-p
Частый частный случай (reset) - с дефолтным конструктором. Это фактически то же самое, что и swap с временным объектом, но зато работает даже для тех классов, которые запрещают присваивание.
Кстати, попалась сегодня ссылка на такой фокус: http://ideone.com/P5Xrvk -- динамическая смена подтипа (при условии, что в подтипах поля не добавляются, конечно)
Я это когда-то давно (поиск выявил 2002 год) придумал независимо, и, что характерно, мой пример был тоже с кошкой и собакой. А идея с фальшивым template пригодится, спасибо.
no subject
Date: 2013-06-20 04:00 am (UTC)no subject
Date: 2013-06-20 04:04 am (UTC)no subject
Date: 2013-06-20 04:20 am (UTC)но, вообще, пока от него больше вреда чем пользы
gcc его вполне сносно поддерживает, но ms compiler, даже последние апдейты, достаточно посредственно, причем, в достаточно неожиданных местах (типа вот этих вот variadic templates)
разработчики стараются понатыкать лямбд куда ни попадя, везде мешанина из старого кода с boost::shared_ptr и прочего с новым кодом с std::shared_ptr
auto умудряется снижать читабельность кода :)
в итоге, мы попробовали на одном проекте, но очевидных плюсов лично я не увидел
совсем новые проекты, как компиляторы допилят, вполне вероятно будет удобно на С++ сразу писать, в старых же пока удобнее все то же самое делать через boost
no subject
Date: 2013-06-20 05:00 am (UTC)no subject
Date: 2013-06-20 06:02 am (UTC)а модифицирующий move-конструктор проверяет на равенство адреса первого аргумента и this.
no subject
Date: 2013-06-20 05:12 am (UTC)no subject
Date: 2013-06-20 06:09 am (UTC)no subject
Date: 2013-06-20 05:19 am (UTC)no subject
Date: 2013-06-20 06:02 am (UTC)no subject
Date: 2013-06-20 05:31 am (UTC)no subject
Date: 2013-06-20 06:03 am (UTC)no subject
Date: 2013-06-20 06:25 am (UTC)no subject
Date: 2013-06-20 06:52 am (UTC)no subject
Date: 2013-06-20 07:22 am (UTC)http://ideone.com/P5Xrvk
-- динамическая смена подтипа (при условии, что в подтипах поля не добавляются, конечно)
no subject
Date: 2013-06-20 07:38 am (UTC)no subject
Date: 2013-06-20 01:12 pm (UTC)no subject
Date: 2013-06-20 03:52 pm (UTC)no subject
Date: 2013-06-20 04:04 pm (UTC)