Consider the following two (similar) symbols: _Z3fooIicEvT_iT0_ and _Z3fooIicEvT0_iT_.
c++filt gives the following output:
> c++filt _Z3fooIicEvT_iT0_
void foo<int, char>(int, int, char)
> c++filt _Z3fooIicEvT0_iT_
void foo<int, char>(char, int, int)
This does not tell us in which order the template parameter were used as function parameters.
Notice, however, that the symbols end differently (T_iT0_ vs T0_iT_), where:
T_= 1st template parameterT0_= 2nd template parameter
So there actually is information available to also print the more generic template declaration.
For example, on the following format:
template<typename T_, typename T0_> void foo(T_, int, T0_);
or
template<typename T_, typename T0_> void foo(T0_, int, T_);
Is there a simple way to retrieve this information?
(And no, I don't want to implement a parser that can interpret the full IA64 C++ ABI specification)