The problem is that type inference takes precedence over default function template parameters. So you get the parameter T , and T never displays a link.
You can prevent this by making the type non-deducible . A common identifier type attribute can do this.
template <typename T> struct identity { using type = T; }; template <typename T> using NotDeducible = typename identity<T>::type; template<typename T_orig, typename T=typename target<T_orig>::T> void g(NotDeducible<T> a) {
Or, in this particular case, you can just completely get rid of the template parameter.
template<typename T_orig> void g(typename target<T_orig>::T a)
R. Martinho Fernandes
source share