模板参数按什么顺序使用?

时间:2018-10-22 12:24:40

标签: c++ g++ name-mangling

请考虑以下两个(类似)符号:_Z3fooIicEvT_iT0__Z3fooIicEvT0_iT_

c++filt提供以下输出:

> c++filt _Z3fooIicEvT_iT0_
void foo<int, char>(int, int, char)

> c++filt _Z3fooIicEvT0_iT_
void foo<int, char>(char, int, int)

这不能告诉我们模板参数作为功能参数的使用顺序。

但是请注意,符号的结尾不同(T_iT0_T0_iT_),其中:

  • T_ =第一个模板参数
  • T0_ =第二个模板参数

因此实际上有可用信息来打印更通用的模板声明。

例如,采用以下格式:
template<typename T_, typename T0_> void foo(T_, int, T0_);

template<typename T_, typename T0_> void foo(T0_, int, T_);

是否有一种简单的方法来检索此信息?

(而且,不,我不想实现一个可以解释完整IA64 C ++ ABI规范的解析器)

0 个答案:

没有答案