у компилятора g ++ есть флаг, который создает макро-расширенный код (-E), поэтому мне интересно, есть ли способ просмотреть код программы после создания экземпляра шаблона до того, как произойдет фактическая компиляция?
Что ж, тем ближе вы можете прочитать AST / ABT, сгенерированный компилятором:
Первый представляет представление синтаксиса в том виде, в котором его понимает компилятор, а второй аналогичен после разрешение привязок (то есть, что a
здесь на самом деле переменная, которая была объявлена за 3 строки до или что foo
соответствует функции, определенной в этом заголовке …).
Clang позволяет сбросить свой AST … который на самом деле является ABT, на самом деле, он улучшается в данный момент; предварительный просмотр
int Test __attribute__((visibility("default")));
int main(int argc, char** argv) {
int x __attribute__((aligned(4))) = 5;
int y = 2;
for (;;)
if (x != y++)
break;
return (x * y);
}
Обычно вы должны увидеть, как шаблон был создан там.
Примечание: чтобы получить его, вам нужно -ast-dump
перейти к входному концу лязга.
Других решений пока нет …