Например:
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>
мертво в воде.