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 _______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users