Инструмент препроцессора шаблонов C++
-
16-09-2019 - |
Вопрос
Существует ли компилятор или автономный препроцессор, который принимает файлы C++ и запускает этап расширения шаблона, генерируя новый код C++ с расширенными экземплярами шаблона?
Я помню такой инструмент в середине 90-х, когда шаблоны были еще новыми и экспериментальными, а препроцессор был способом программирования шаблонов с помощью компиляторов без встроенной поддержки шаблонов.
Это намного сложнее, чем этап макрообработки, поскольку для понимания контекстов, скорее всего, потребуется анализ и токенизация кода.
Я надеюсь использовать такой инструмент при написании кода OpenCL. OpenCL является C++, но не поддерживает шаблоны.Я надеюсь, что смогу писать шаблоны, даже простые, например, с целочисленными или логическими аргументами, и иметь какой-нибудь инструмент для предварительного анализа файла, поиска использования шаблонов, расширения вызовов и предоставления мне нового кода C++, который компилятор OpenCL может понимать.
Даже очень ограниченный инструмент может быть полезен, ему не нужно поддерживать все особенности шаблона или даже поддерживать несколько модулей или что-то еще.
Альтернатива: #define
макросы везде..более уродливый, небезопасный, менее эффективный и менее универсальный.
Решение
Комо С++ может «скомпилировать» C++ в C.Казалось бы, это близко к вашей цели, поскольку OpenCL не поддерживает C++ — он гораздо ближе к C.
Другие советы
Такого инструмента нет — шаблоны — это часть языка, а не какой-то проход препроцессора — они обрабатываются компилятором, как и другой код.