0xd34df00d 07.12.2011 20:46 Azoth_primary

А вот это оче охуенно. Вместо того, чтобы писать

if (!version.name ().isEmpty ())
html += tr ("Name:") + ' ' + version.name () + "<br />";
if (!version.version ().isEmpty ())
html += tr ("Version:") + ' ' + version.version () + "<br />";
if (!version.os ().isEmpty ())
html += tr ("OS:") + ' ' + version.os () + "<br />";

или создавать функтор в анонимном неймспейсе недалеко от функции, делающей это, можно написать так:

auto gapp = [&html] (QString user, QString part)
{
if (!part.isEmpty ())
html += user + ": " + part + "<br />";
};
gapp (tr ("Name"), version.name ());
gapp (tr ("Version"), version.version ());
gapp (tr ("OS"), version.os ());

1. DZhon 07.12.2011 20:50 Azoth

можно еще нечто вроде
template<Callable C>
runInCapturedState(C c) {
push(state);
c();
pop(state);
}

runInCapturedState([]()
{ blah-blah;}
);

Надо правда, чтобы c не кидалась исключениями, при таком коде. Либо прикрутить в try.

2. generatorglukoff 07.12.2011 20:51 Дома1A23B1CA

это можно сделать макросами

3. 0xd34df00dDZhon /1 07.12.2011 20:51 Azoth_primary

А с памятью не наебешься? Ну там, скоупинг, вся хуйня.

4. 0xd34df00dgeneratorglukoff /2 07.12.2011 20:51 Azoth_primary

Нахуй иди сразу молча далеко.

5. generatorglukoff0xd34df00d /4 07.12.2011 20:52 Дома1A23B1CA

:D

6. DZhon0xd34df00d /3 07.12.2011 20:52 Azoth

Ну, это концепт. It depends.

7. 0xd34df00dDZhon /6 07.12.2011 20:53 Azoth_primary

Из-за отсутствия GC и нежелания оборачиваться шаред_птрами на каждый чих очень неохота давать лямбдам убегать куда-то дальше 5 строк от ε-окрестности.

8. DZhon0xd34df00d /7 07.12.2011 20:57 Azoth

по идее, она должна просто инлайнуться в месте вызова.

9. generatorglukoff0xd34df00d /7 07.12.2011 20:58 Дома1A23B1CA

лямбда без замыкания — суть функция и следить не надо

10. DZhongeneratorglukoff /9 07.12.2011 20:58 Azoth

если захвачено что-то по ссылке, то надо

11. generatorglukoffDZhon /10 07.12.2011 20:59 Дома1A23B1CA

если захвачено по ссылке то выпускать вообще низзя

12. DZhongeneratorglukoff /11 07.12.2011 20:59 Azoth

то то же, так что без GC это опасная хуета

13. 0xd34df00dgeneratorglukoff /9 07.12.2011 20:59 Azoth_primary

А я про замыкания.

14. 0xd34df00dDZhon /12 07.12.2011 20:59 Azoth_primary

Вот и я про то же.

15. generatorglukoffDZhon /12 07.12.2011 21:00 Дома1A23B1CA

захватывайте по значению

16. DZhongeneratorglukoff /15 07.12.2011 21:00 Azoth

Movable по значению ? кекеке

17. DZhonDZhon /16 07.12.2011 21:00 Azoth

movable only*

18. DZhon0xd34df00d /14 07.12.2011 21:01 Azoth

с другой стороны, еще никогда std::for_each не был так охуенен, как в сочетании с лямбдой, хватающей по неконстантной ссылке.

19. 0xd34df00dDZhon /18 07.12.2011 21:02 Azoth_primary

ДЖА.
Правда, если писать аналог map (то есть, std::for_each (..., [&cont] (...) { cont.push_back (...); });), то я предпочитаю std::transform с std::back_inserter'ом. Мне кажется, оно как-то идеологически вернее, что ли.

20. DZhon0xd34df00d /19 07.12.2011 21:03 Azoth

А сверткоподобные вещи через std::accumulate :)

21. 0xd34df00dDZhon /20 07.12.2011 21:04 Azoth_primary

Да.

22. DZhon0xd34df00d /21 07.12.2011 21:05 Azoth

я тесты как-то читал, constexpr обещает быть мегагоднотой на фоне темлейтозадроства и генерации рекурсивных специализаций

24. 0xd34df00dDZhon /23 07.12.2011 21:08 Azoth_primary

О, шпашибки, гляну и ваще блог почитаю.

25. borman 08.12.2011 04:23

Тогда уж tr() в лямбду запихни, чтобы было ЛЕНИВО

26. 0xd34df00dborman /25 08.12.2011 04:34 Jabiru

Оно там не нужно, ленивость эта.

Do you really want to delete ?