First of all, you're missing a typename
before Outer<T1>::Inner::Type
. You have to have it, even in a template
type list, because Type
is a dependent type.
Secondly, your specialisation syntax is wrong (the type goes in <>
after the function name before the parentheses, not in the template<>
), but even if it was correct, it would not be legal. You have to specialise the outer template Outer
before you can fully specialise update
, according to an unfortunate rule regarding explicit template specialisation.