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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users