requires clause evaluation within CRTP

Hi Everyone,

I've been trying to use libstdc++ <ranges> from GCC 10.1 with Clang 10.0. Even a basic example using `single_view` fails to compile. With some digging, I narrowed it down the following example using CRTP:

template <typename D>
struct CRTP {
   void call_foo() requires
     requires (D& v) { v.foo();} {
       static_cast<D*>(this)->foo();
   }
};

struct Test: public CRTP<Test> {
   void foo() { }
};

int main()
{
   Test t;
   t.call_foo();
   return 0;
}
<source>:16:7: error: invalid reference to function 'call_foo': constraints not satisfied
   t.call_foo();
     ^
<source>:4:27: note: because 'v.foo()' would be invalid: no member named 'foo' in 'Test'
     requires (D& v) { v.foo();} {
                         ^

https://godbolt.org/z/jHt2E3

In essence, when Clang checks the requirement it treats the derived class as incomplete, even though an instance was constructed on the previous line.

Thanks,
Andrey