Consider the following simple concept:
template <typename T>
concept C = requires(T a) { a.f(); };
What should happens if we take an abstract class type as the requires expressions's argument?
struct B { virtual void f() = 0; };
static_assert(C<B>);
gcc-trunk and msvc-trunk pass the assertion, however, clang-trunk, gcc-10.2, and msvc v19.24 reject the assertion.
What does the standard say?