https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109181
--- Comment #5 from waffl3x <waffl3x at protonmail dot com> --- (In reply to Patrick Palka from comment #3) > A workaround is to just remove the unneeded 'template' after the :: in this > case. Or is there an example where the template keyword is needed that we > incorrectly reject? In my original use case, A in `inline constexpr bool go = requires{typename A::template B<int>;};` would have been dependent, I included the template keyword because of that but it should have occurred to me that the example I presented doesn't need it, I'm not sure what the standard requires for this sort of thing though. When I reduce I just remove everything that isn't required to get the result I'm looking for, I should have realized that changing the semantics of the example might create confusion and in the future I think I will also include a reduced version that comes closer to the problem I actually encountered, I imagine that it will be helpful even if it's not actually the most reduced version. I'll try to create an example that reflects my use case better as soon as I can.