Berkus
там оптимайзер тупо сводит T create() { return T(); } до T()
Berkus
а дальше все практически как в истории про A b = a;, только справа у тебя move
Berkus
я прости не понимаю что ты хочешь сказать
Berkus
я тебе показал код
Berkus
покажи теперь ты
Berkus
он и не вызывался
ttldtor
можно ещё и это порекомендовать https://www.youtube.com/watch?v=PNRju6_yn3o правда, он почти истерит
ttldtor
В смысле, там тоже есть про rv-ref и perfect forwading
🐙 Antony
Там на пятой странице немного стёмный пример с "X&& goo();" Я бы прям в этом же месте подправил X&& goo(); // returns REFERENCE to something inside goo(). rvalue reference, but still beware of dangling references X x = goo(); // calls X(X&& rhs) because the thing on // the right hand side has no name X goo2(); X x2 = goo2(); // calls X(X&& rhs) because the thing on // the right hand side ALSO has no name Не написано что нынче принято называть Arg&& как forwarding reference в template<typename T, typename Arg> shared_ptr<T> factory(Arg&& arg); И еще нет хорошего трюка для превращения forwarding reference в rvalue reference: /// Binds to rvalues only, no copying allowed. template <class T , class = std::enable_if_t<std::is_rvalue_reference<T&&>::value> > using rvalue_t = T&&; template<typename T, typename Arg> shared_ptr<T> factory(rvalue_t<Arg> arg); // accepts only rvalue references of Arg А в остальном норм :)
🐙 Antony
раньше не читал
Billy
хорошая статья
Berkus
есть же meson
Sergey
когда там qbs придет?
Sergey
чтобы на нормальном языке описывать сборку
Sergey
на js я имею в виду
Berkus
хотя мне больше gyp + buck нравятся в комбинации
Sergey
на js я имею в виду
Billy
нравится или Не нравится?
Igor
build2 на реддите периодически пиарится, но хз, не трогал
Billy
ничего, в том то и дело )
Billy
есть premake ну как-то там пару тройку лет назад было тухло все
Anonymous
Meson. Многие опенсорц проекты переходят на него.
Anonymous
https://github.com/mesonbuild/meson
Matwey
даешь систему сборки плюсов на плюсах
Matwey
почему? можно сделать синтаксис какой-нибудь приятный с помощью шаблонной магии
Matwey
потом делаешь g++ -o build build.cpp
Matwey
и ./build тебе начинает всё собирать
Matwey
удобно же
Anonymous
даешь систему сборки плюсов на плюсах
Автокрап уже был, правда не на плюсах, а на голом Си. Спасибо, больше не надо.
Berkus
tup!
Matwey
он не на голом C, он на m4
Berkus
даешь систему сборки плюсов на плюсах
внезапный сюрприз - cmake написан на плюсах
Matwey
внезапный сюрприз - cmake написан на плюсах
Ну ты прочитай что я написал, да
Berkus
это система сборки для плюсов на плюсах, всё как заказывали!
Berkus
ну там какой-то DSL еще прикручен, это дело десятое
Aidar
Люди почему конструктор vector работает как push а не emplace?
Matwey
Я предлагаю всю систему сборки сделать в виде библиотеки. А описание проекта в виде модуля, без всякого DSL
Berkus
и m4
Anonymous
Более удобный формат манифестов сборки.
Anonymous
автокрап был на голом баше
Тогда всё ещё хуже.
Berkus
Более удобный формат манифестов сборки.
manifest я надеюсь это декларативно? но при этом всегда можно исполнить код если надо?
Anonymous
manifest я надеюсь это декларативно? но при этом всегда можно исполнить код если надо?
Там Python в них может использоваться со всеми вытекающими.
Anonymous
Пример на Meson: cc = meson.get_compiler('c') ldl = cc.find_library('dl', required: false) pth = cc.find_library('pthread', required: false) utl = cc.find_library('util', required: false) mth = cc.find_library('m', required: false)
Pavel
Pavel
scons?
Pavel
Pavel
помнится мне что там как раз питон + мироадок
Nikita
Конструктор с заполнением
потому что никому не нужно было, теперь делать пропозал и ждать в стандарте через 3 года
Anonymous
https://github.com/systemd/systemd/blob/master/meson.build - пример билд-манифеста systemd на Meson.
Berkus
Там Python в них может использоваться со всеми вытекающими.
а, опять пошли по граблям scons/waf? НАХУЙ сразу
Anonymous
а, опять пошли по граблям scons/waf? НАХУЙ сразу
Всё больше проектов переходят на него. Скоро вытеснит cmake.
Berkus
Всё больше проектов переходят на него. Скоро вытеснит cmake.
был какой-то момент когда все проекты бежали на scons, а потом в четыре раза быстрее бежали с него
Pavel
нужно понимать что cmake еще имеет 100500 сторонних cmake файлов под всякие тулчайны и прочее
Ioann_
Настоящие хакеры пишут файлы сборки проекта руками
Pavel
Настоящие хакеры пишут файлы сборки проекта руками
настоящие хакеры сразу пишут машинный код
Aidar
Настоящие хакеры пишут файлы сборки проекта руками
Настоящие хакеры используют бабочек
Anonymous
Настоящие хакеры пишут файлы сборки проекта руками
Если у тебя приложение чуть выше, чем helloworld.cpp, ты начнёшь использовать систему сборки.
Nikita
Настоящие хакеры используют бабочек
Настоящие хакеры пишут конфигурации для бабочек на перле
Anonymous
был какой-то момент когда все проекты бежали на scons, а потом в четыре раза быстрее бежали с него
Возможно. Лично мне cmake больше нравится и как разработчику, и как мейнтейнеру.
Ioann_
Ладно, я тоже за СМейк
Berkus
Возможно. Лично мне cmake больше нравится и как разработчику, и как мейнтейнеру.
https://github.com/berkus/carma/commit/7c8ef1730e524767a8f574e594bc1bb2af23bb91?diff=split зилененькое - цмейк, красненькое - waf (такое же питоноподелие как scons только полегче)
Berkus
кучи ненужного бойлерплейта
Berkus
waf как-то дико выглядит, имхо.
не особо от сконса отличается, на самом деле
Pavel
и то в конторе наверное он внедрен был как хотелка начальства а не пожелание коллектива
Anatoly
c bjam-а я перешел на cmake - это был революционный скачек
Ned
Meson. Многие опенсорц проекты переходят на него.
Хех, он поддерживает D, это приятно)
🐙 Antony
Кстати, а никто случайно не занет, какой License Agreement надо добавить в репозитарий github, чтобы потом можно было менять лицензию не опрашивая всех авторов pull requestов?
Berkus
но можно добавить пару строк что контрибуторы контрибутя соглашаются на возможную смену лицензии априори
🐙 Antony
Не похоже что этого достаточно: The meaning of a signoff depends on the project, but it typically certifies that committer has the rights to submit this work under the same license