To properly debug complex macros in C++ I usually run the preprocessor on them in order to see exactly what the resulting code looks like.
Is there a similar way to
One way (compiler-dependent) is to use dumping after each compiler step. I wrote a small program:
template
T square(T n)
{
return n * n;
}
int main(void)
{
square(3);
square(3.0);
}
then:
g++ -fdump-rtl-all test.cc
This get me a bunch of files. Take a look at (in my case) test.cc.218.dfinish:
;; Function int main() (main)
;; Function T square(T) [with T = int] (_Z6squareIiET_S0_)
;; Function T square(T) [with T = float] (_Z6squareIfET_S0_)