Вопрос

Существует ли компилятор или автономный препроцессор, который принимает файлы C++ и запускает этап расширения шаблона, генерируя новый код C++ с расширенными экземплярами шаблона?

Я помню такой инструмент в середине 90-х, когда шаблоны были еще новыми и экспериментальными, а препроцессор был способом программирования шаблонов с помощью компиляторов без встроенной поддержки шаблонов.

Это намного сложнее, чем этап макрообработки, поскольку для понимания контекстов, скорее всего, потребуется анализ и токенизация кода.

Я надеюсь использовать такой инструмент при написании кода OpenCL. OpenCL является C++, но не поддерживает шаблоны.Я надеюсь, что смогу писать шаблоны, даже простые, например, с целочисленными или логическими аргументами, и иметь какой-нибудь инструмент для предварительного анализа файла, поиска использования шаблонов, расширения вызовов и предоставления мне нового кода C++, который компилятор OpenCL может понимать.

Даже очень ограниченный инструмент может быть полезен, ему не нужно поддерживать все особенности шаблона или даже поддерживать несколько модулей или что-то еще.

Альтернатива: #define макросы везде..более уродливый, небезопасный, менее эффективный и менее универсальный.

Это было полезно?

Решение

Комо С++ может «скомпилировать» C++ в C.Казалось бы, это близко к вашей цели, поскольку OpenCL не поддерживает C++ — он гораздо ближе к C.

Другие советы

Такого инструмента нет — шаблоны — это часть языка, а не какой-то проход препроцессора — они обрабатываются компилятором, как и другой код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top