Мне любопытно - универсальное программирование (GP) широко используется в промышленности?
Это действительно широко зависит от контекста команды и проекта.
Например, в видеоиграх часто код является «самым простым» возможным (и даже иногда слишком простым), но в больших архитектурах. Это потому, что разработчики игр имеют много проблем, которые нужно решить, и не хотят беспокоиться о метапрограммировании (это отдельный, очень абстрактный и сложный для понимания язык внутри C ++).
В то же время, базовое использование шаблонов распространено даже в этих магазинах, и вы можете увидеть некоторые оптимизации на основе шаблонов в некоторых очень специфических функциях некоторых движков.
Но в игровой разработке большинство людей просто избегают метапрограммирования.
Теперь, с другой стороны, некоторые действительно сложные или тяжелые приложения обработки, которые не являются распространенными, требуют некоторого тяжелого метапрограммирования из-за требований к производительности и гибкости (во время компиляции), которые не являются общими. Я работаю в одном прямо сейчас.
Это не распространено, но оно существует, и некоторые нишевые области (в некоторых научных или ограниченных по численности встроенных контекстах) действительно требуют, чтобы люди много знали о метапрограммировании или желали учиться.
В середине большинство людей будут просто использовать метапрограммирование как «клиент», а не как «дизайнер». Большая часть кода метапрограммирования объединена в библиотеки, потому что библиотеки являются инструментами для кода, и что может быть лучше библиотеки, которая может адаптироваться к пользовательским типам, с которыми вы работали до сих пор?
Boost (http://boost.org) - это набор библиотек, некоторые из которых сделаны из тяжелой метапрограммирующей черной магии и используются во многих магазинах C ++ как «STL ++», расширение STL (и так оно и есть). Не каждый магазин использует его по нескольким причинам, например, совместимость с компилятором (некоторые библиотеки надстроек могут заставить ваш компилятор извиняться за каждый раз, когда он причиняет вам боль ...) и чаще, потому что некоторым разработчикам не нравится неспособность понять как работает инструмент внутри (попытайтесь понять Boost.Spirit ...)
В каких бы компаниях вы ни работали, некоторые будут использовать эту парадигму, некоторые - меньше или не будут вообще или даже запретят их.
Нет единого мнения, потому что ни у кого нет одинаковых потребностей, контекста или команды.
Но все же, очевидно, он используется. Может быть, спросите, кто использует boost в своем списке рассылки, чтобы иметь больше примеров из реальной жизни?