Вот если модули совместят с чем-то вроде Cargo/Maven/RubyGems/Cabal, тогда да, тогда ситуация может поменяться принципиально.
Статические и динамические библиотеки уже изобрели.
А шаблоны компилируются разными компиляторами с разными опциями компиляции. Так что такого репозитория не будет. Разве что самодельный внутрипроектный на nfs + symbolic links
затем, что эта стандартная библиотека классическое вырвиглазное ниочём. А там хоть что-то появляется из повседневно нужного. Насколько оно там юзабельное - не знаю. Обычно говно какое-то продают под видом расширения стандартной библиотеки.
и там тоже не было try-catch'ей (может, был один, и то вот не припоминаю). в серьёзных проектах это не нужно. аварийные ситуации там означают неправильно написанный софт.
И конструкторов там тоже, вероятно не было. Ибо конструкторы классов без исключений не в состоянии сообщить об ошибке. Как и многие другие фичи прямо завязаны на использование исключений.
Очень сомнительное сочетание. Обычно означающее бесконечные копирования по поводу и без. В плюсах никогда не будет нормального строкового типа из-за проклятия совместимости с C.
Жизнь от этого заиграет новыми красками? Сомнительно. У меня тоже есть свой optional, к слову. Только это не самая большая проблема во время работы с C++
Я хз что там за код. Там, где мне было нужно, лямбды инлайнились в тот же асм-код, что был бы и при ручном инлайнинге с копипастой кода. А там, где не инлайнились - или с моего позволения или что-то придумывал.
В любом случае - если выдавать человеко-строки кода за деньги, то можно считать лямбды очень лёгким сахарком.
в финансовых сферах, том же HFT, скорость это деньги. К томже в асм оно никогда не инлайнилось, оно оберткой вокруг std::functional стоит. А functional это отельный делегат
Если имеется ввиду std::function из заголовка <functional> то к лямбдам он не имеет отношения. Да и проблема посмотреть что там компилятор нагенерил небольшая.
Из типичных проблем - при передаче по ссылке целочисленного литерала может появляться фантомная переменная (в машинных кодах) на стеке, чтобы обеспечить эту ссылку содержимым. Редко, если лямбда развесистая и/или используется в нескольких местах, она просто не инлайнится.
В общем, зная нутро конкретного компилятора, писать под него подходящий код можно.
я вообще не понимаю этих страдальцев. когда компилишь даже очень большой проект, он не пересобирается весь (конечно, если всё правильно поделено на модули и библиотеки и в хэдерах нет мусора).
при разработке компиляция занимает доли секунды
в сферическом вакууме, где не надо зависеть от людей на другой стороне шарика и релизиться «быстро и часто» с CI/DI пайплайнами в облаке, настройкой которого ты вообще ни разу не управляешь (а там довольно часто делается накат «с нуля» с пересборкой зависимостей под N-платформ и M-конфигураций :)
я вообще не понимаю
Именно что весь и сразу — потому что опять сейлзы продали конфу под платформу которая «не поддерживается уже пару лет» и нужно ее заново поднять («и не вздумайте сказать, что мы компиляем, мы конфигурируем»). Ну и опять это вот «непонимание» — тупо отсутствие реального опыта когда этот твой «один раз» в случае интеграционных проектов по «перезапуску» и прочему «ребрендингу» под зонтиком корпоративных слияний повторяется регулярно — потому что ранее принятые проектные решения про «нафиг не нужно» и «с мощной оптимизацией» под одни условия делались такими же «экспертами» с горизонтом планирования «работа-дом» (а условия-то все время меняются — сегментация рынка жы есть :)
образчики таких «закрытых кодов» гоняют с аутсорца на аутсорц из одной галеры в другую (выкладывая целыми кусками на говнокод.ру :) чисто поржать с СПГСа посонов, «чиво делает этот код» и «что курил кто это написал»:
в одной галере демпинганули и написали наколеночный «ПОЦ» («пруф оф концепт»), который без допилок ушел в продакшен, в другой его что, переписывают и доводят до ума? Ага, щас! Впиливают новые костыли и подпорки, чтоб не падал в неожиданных местах, где забыли что строку формата недостаточно «проверить на длину», а длину массива не обязательно указывать волшебными числами в шести местах из-за которых в «known issues» указано что-то вроде «для того чтоб использовать кастомный код 10000 нужно добавить в конфиг еще 10001 и никогда не использовать!» :)
И вот не надо рассказывать про мегасофт банковских транзакций и т.д. (через мои руки прошло много таких «поделок», которые пришлось переписывать чтоб они не стреляли себе в ногу от недокументированных особенностей мозга своих авторов, дрочащих в присядку на «мегаоптимизации», которыми чаще оправдывалось банальное срезание углов перед релизом — отсутствие проверок не только там где по заявлениям авторов «снижается производителтность!», «кококо оверхед!!!» — заявления ими делались обычно без пруфов с выдачи профайлера (в порядке троллинга мы его добавляем в CI), посему были проигнорированы — но и там, где это попросту необходимо, чтобы программа была таки fault tolerant, не говоря уж о fail safe не только в маркетинговой макулатуре предыдущих подрядчиков).
серверные приложения не шарятся по винту. они получают конфиг
Ыыыы. По сети. Потом админ заказчика хочет этот конфиг на месте посмотреть и пофиксить, а не пока сапорт «обработает тикет».
всё прописано жёстко
Ага. В конфиге. Или в маппинге. Скачать с билд-облака пару десятков свежих либ с функционалом (.so? .dll? бандлы?), поднять на сервере M-цать... Но M-цать мало — лучше N-цать инстансов сервисов и связать их в нужную «оркестровку» с поддержкой кластера/балансировкой нагрузки и т.д. То же самое «и быстра блеать!» в случае сбоя в течение «опердня» — а это значит что? Персистентность и файлы, по которым придется шариться при перезагрузке, чтоб продолжить с того места, где «что-то пошло не так». При этом оно не должно впадать в ступор от того, что в этой конфе стало не «демоном», а «службой» с инсталлером не в .run, а в .msi (но с поддержкой self-хостинга, выдачей выхлопа куда указано) и логи персистентных транзакций надо слить ни разу не в syslog, а в заботливо подставленный SPLUNK заказчика («то есть как... файлами?»), IBM MQ («Штоа, пароли 6 символов?»), и... куда скажут ваще — но не внутрь бандла Mac Os X с исполняемым файлом, как это на моей памяти сделали «независящие от кроссплатформенности» велосипедисты, не увидевшие разницы между «сортами юниксов».
А еще у серверных программ бывают результаты их работы, которые тоже надо непременно сохранить — историческая это маркетдата для продажи писателям hft-роботов или данные о сделках за фискальный период, или тупо сырые данные с хреналиона датчиков, которые порождают «бигдату» быстрее, чем топовые числодробилки успевают ее обработать.
в серьёзных проектах это не нужно. аварийные ситуации там означают неправильно написанный софт.
В серьезных проектах аварийные ситуации означают тазик с цементом для пейсателя, материальный ущерб и человеческие жертвы. Не надо рассказывать про «серьезный-серьезный биллинг ОПСОСа» и прочую деньгощитательную муйню. Там как раз почем зря срезают углы, а не «пишут правильный софт».