Существует ли компилятор или автономный препроцессор, который принимает файлы C ++ и выполняет этап расширения шаблона, генерируя новый код C ++ с расширенными экземплярами шаблона?
Я помню такой инструмент в середине 90-х, когда шаблоны были еще новыми и экспериментальными, и препроцессор был способом программирования шаблонов с помощью компиляторов без поддержки собственных шаблонов.
Это намного сложнее, чем этап макрообработки, поскольку для понимания контекста он, вероятно, потребует разбора и токенизации кода.
Я надеюсь использовать такой инструмент при написании кода OpenCL. OpenCL - это C ++, но не поддерживает шаблоны. Я надеюсь, что смогу написать шаблоны, даже простые, например, с целочисленными или bool-аргументами, и иметь какой-то инструмент для предварительного анализа файла, поиска и использования шаблонов, расширения вызовов и предоставления мне нового кода C ++, который OpenCL компилятор может понять.
Даже очень ограниченный инструмент может быть полезен, он не должен поддерживать каждую причуду шаблона или даже поддерживать несколько модулей или что-либо еще.
Альтернатива: #define
макросы везде ... страшнее, небезопасно, менее эффективно и менее универсально.