Anonymous
и?
чо и? Ты же написал, что >внутрь строки не заглянуть, опять же
ttldtor
ржу
ttldtor
откуда эта байка?
Vladislav
так он ее только в runtime дергает, по ссылке/указателю из шаблона
Anonymous
Какая байка?
Anonymous
аа понятно
ttldtor
какой компилятор ?
Anonymous
visual c++
Anonymous
14.0
ttldtor
=)
Vladislav
есть A a = ...; загадка: какой код быстрее (или работают одинаково) и почему? vector<A> b{std::move(a)}; или vector<A> b; b.emplace{std::move(a)}; Считаем что A быстро move'ается, но долго копируется
Anonymous
>vector<A> b; b.emplace{std::move(a)}; стоит учесть время потраченное на стандартный конструктор A? В первом случае вызывается сразу перемещающий конструктор
Anonymous
а СК для вектора b во втором случае?
Vladislav
а СК для вектора b во втором случае?
он будет, да, но им можно пренебречь
babysitter
тут наверное всем страшно облажаться. но я вообще не очень понимаю, что тут написано - я не шарю видимо может emplace_back(std::move(a)) ?
babysitter
ну или хотя бы за фигурные скобки после emplace поясни
babysitter
классная задача, спасибо.
babysitter
я блин даже вот так попробовал уже A a; std::initializer_list<A> il = { std::move(a) }; std::vector<A> b(std::move(il)); похоже объект типа initializer_list никак не может быть перемещен, только скопирован
babysitter
http://stackoverflow.com/questions/8193102/initializer-list-and-move-semantics
Dumitru
такая ситуация случилась auto h1 = new Handler<Html>(); auto h2 = new Handler<Index>(); надо h1 и h2 загнать в один вектор, как это сделать я пока себе не представляю у Html и Index общий родитель что можно придумать?
Dumitru
std::vector<Handler<RequestHandler>*> V{h1,h2}; не работает
Dumitru
не, тоже не работает)
Kirill
можно как указателей на родителей хранить, для этого наследование и есть
Kirill
родитель же общий интерфейс, по которому будут его дергать
Dumitru
родитель же общий интерфейс, по которому будут его дергать
но у меня тут шаблоны, оно не хочет работать
babysitter
нету общего родителя тут
Kirill
у Html и Index общий родитель что можно придумать?
Kirill
это цитата
babysitter
у Html и Index общий родитель что можно придумать?
но у Handler<Html> и Handler<Index> внезапно нифига не общий
Dumitru
вооот, в этом и проблема)
Dumitru
как решить не знаю
babysitter
искусственно унаследовать Handler от пустого класса можно попробовать
Kirill
ааа, я думал у хендлеров общий родитель
Kirill
ну какбе да, сделать им общий интерфейс и за него дергать
Dumitru
я немного не догнал, как это сделать ?
Andrey
я немного не догнал, как это сделать ?
вектор с указателем на void :D
Kirill
template<Typename T> class Handler: public iHandler
Andrey
😂
Dumitru
template<Typename T> class Handler: public iHandler
сейчас попробую, но у меня почему-то сомнения по этому поводу
Kirill
😂
вы стебетесь а в freertos так параметры передают в поток))
Kirill
А чо не так? http://melpon.org/wandbox/permlink/X0JPNQMDDIwa762W
там не было общего интерфейса у хендлеров, но да, как сказали уже это стандартный юзкейс
Anonymous
А зачем хранить их в одной векторе, если у них не было общего интерфейса?
Dumitru
заработало!! всем большое спасибо!
Dumitru
я пытался раньше сделать общий класс, но что-то с шаблонами напутал видимо
Anonymous
Есть тут еще кто-нибудь из Бишкека?
Nyah
видимо, кроме вас двоих , нет
Kirill
Может кто-нибудь объяснить, зачем нужен этот макрос, и почему без него не работает? http://pastebin.com/McjM4C8f
Denis
Наверное вопрос был зачем форвард, или нет? )
Aidar
Читай про std::forward и perfect forwarding
Kirill
Что такое perfect forwarding я знаю. Тут вся суть в его сочетании с разворачиванием variadic templates.
Kirill
Я не могу понять, нужен макрос или нет.
Aidar
Ну читай про variadic templates че
Aidar
Можешь вручную написать
Kirill
Чет не компилируется
Aidar
Покажи код
Vladislav
в данном случае variadic не нужны, можно просто #define CPR_FWD(t) ::std::forward<decltype(t)😠t)
Kirill
А, все, заработало. У меня ошибка была.
Kirill
Действительно, просто для экономии макрос сделали.
🦥Alex Fails
Да. Эти имена, сволочи, длинные
Kirill
А возможно ли ограничить аргументы variadic шаблона так, чтобы нельзя было передать ему типы A и B вместе?
Vladislav
можно, для начала написать has_type<class A, class... T>, потом использовать std::enable_if<!(has_type<A, T...>::value && has_type<B, T...>::value)>
Kirill
Логично. А если нужно разрешить передачу только одного из N типов?
Крылатый
Кстати, довольно частый вопрос.
Крылатый
Пост что ли написать про это)
Anonymous
господа.. какой компилятор есть под винду..(не от мс) свежий?
🦥Alex Fails
Да тут больше вариантов нет
🦥Alex Fails
Кроме icc, clang
🦥Alex Fails
Эх. 666 юзеров пропустили
Anonymous
щас ставлю код блокс..