[cxx-abi-dev] Mangling of variadic arguments to alias template

Jason Merrill jason at redhat.com
Tue Dec 13 04:05:30 UTC 2011


In most cases, an alias template is transparent; when it's used in a 
template we can just substitute in the dependent template arguments.  So 
it seems to make sense for it to be transparent to mangling as well. 
But this doesn't work if the template-id uses a pack expansion for 
non-variadic parameters.  i.e.

template<class T, class U, class V>
struct S {};

template<class T, class V>
using A = S<T, int, V>;

template<class... Ts>
void foo(A<Ts...>);

There is no way to express A<Ts...> in terms of S; we need to wait until 
we have the argument pack before we can assign individual arguments to 
parameters.

So what do we want to do about this?  Mangle alias-templates only in 
this situation?

Jason



More information about the cxx-abi-dev mailing list