Например:
template <typename T>
struct foo
{
using bar = int;
};
// _Z3bazi
void baz(foo<int>::bar quux) {
}
template <typename T>
void baz(typename foo<T>::bar quux) {
}
// _Z3bazIiEvN3fooIT_E3barE
template void baz<int>(foo<int>::bar quux);
Почему искаженная форма baz<int> упоминает foo вообще? Почему это не _Z3bazIiEvi?
По-видимому, это причина, по которой предложение С++ 17 std::default_order<T> мертво в воде.