inspect C++ template instantiation
Is there some utility which would allow me to inspect template instantiation? my compiler is g++ or Intel.
Specific points I would like:
- Step by step instantiation.
- Instantiation backtrace (can hack this by crashing compiler. Better method?)
- Inspection of templat开发者_开发技巧e parameters.
@gf helpd me with simple type printing, C++ template name pretty print.
However I am getting into boost phoenix and template level makes it very hard to understand what is going on and I would like intelligent solution
also, if you have some techniques inspecting template instantiation, can you please share them.
Thanks
With templates we simply don't have clean output facilities and there are no compilers i know of that allow you to directly view template instantiations. The closest i found regarding metaprogram debugging was a paper on Templight.
For now the best utilities seem to be:
- static asserts & concept checks (clearly assert your assumptions)
- the mentioned instantiation backtraces (e.g. by using static asserts)
- letting instantiations generate warnings (
boost::mpl::print
might do it) - a tracer, a custom class that gets passed as a template argument and is used to emit runtime output (introduced by C++ Templates - The Complete Guide)
精彩评论