开发者

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)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜