https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88358
--- Comment #4 from Nicolas Lesser <blitzrakete at gmail dot com> ---
Almost the same fix has to apply when the declarator is unqualified: Always
treat T::something as a value, never as a type. This is not part of the allowed
contexts in P0634. I don't know which core discussion you're referring to, but
this is still a well-formed program:
template <typename T>
int pi(T::your_pi);
struct Foo { static constexpr int your_pi = 10; };
int main() {
return pi<Foo>; // gcc rejects
}