diff --git a/libcxx/test/std/concepts/concepts.callable/concept.invocable/invocable.compile.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.invocable/invocable.compile.pass.cpp --- a/libcxx/test/std/concepts/concepts.callable/concept.invocable/invocable.compile.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.invocable/invocable.compile.pass.cpp @@ -222,21 +222,30 @@ static_assert(!std::invocable); struct multiple_overloads { - bool operator()(); - void operator()(int); - int operator()(double); + struct A {}; + struct B { B(int); }; + struct AB : A, B {}; + struct O {}; + struct DA : A {}; + struct DB : B {}; + void operator()(A) {}; + void operator()(B) {}; }; -static_assert(std::invocable); -static_assert(std::invocable); +static_assert(std::invocable); +static_assert(std::invocable); +static_assert(std::invocable); +static_assert(std::invocable); static_assert(std::invocable); -static_assert(!std::invocable); -static_assert(std::invocable); -static_assert(std::invocable); -static_assert(std::invocable); +static_assert(!std::invocable); +static_assert(!std::invocable); + +static_assert(std::invocable); +static_assert(std::invocable); +static_assert(std::invocable); +static_assert(std::invocable); static_assert(std::invocable); -static_assert(!std::invocable); -static_assert(std::invocable); -static_assert(std::invocable); +static_assert(!std::invocable); +static_assert(!std::invocable); } // namespace function_objects namespace pointer_to_member_functions { diff --git a/libcxx/test/std/concepts/concepts.callable/concept.regularinvocable/regular_invocable.pass.cpp b/libcxx/test/std/concepts/concepts.callable/concept.regularinvocable/regular_invocable.pass.cpp --- a/libcxx/test/std/concepts/concepts.callable/concept.regularinvocable/regular_invocable.pass.cpp +++ b/libcxx/test/std/concepts/concepts.callable/concept.regularinvocable/regular_invocable.pass.cpp @@ -248,21 +248,30 @@ !std::regular_invocable); struct multiple_overloads { - bool operator()(); - void operator()(int); - int operator()(double); + struct A {}; + struct B { B(int); }; + struct AB : A, B {}; + struct O {}; + struct DA : A {}; + struct DB : B {}; + void operator()(A) {}; + void operator()(B) {}; }; -static_assert(std::regular_invocable); -static_assert(std::regular_invocable); +static_assert(std::regular_invocable); +static_assert(std::regular_invocable); +static_assert(std::regular_invocable); +static_assert(std::regular_invocable); static_assert(std::regular_invocable); -static_assert(!std::regular_invocable); -static_assert(std::regular_invocable); -static_assert(std::regular_invocable); -static_assert(std::regular_invocable); +static_assert(!std::regular_invocable); +static_assert(!std::regular_invocable); + +static_assert(std::regular_invocable); +static_assert(std::regular_invocable); +static_assert(std::regular_invocable); +static_assert(std::regular_invocable); static_assert(std::regular_invocable); -static_assert(!std::regular_invocable); -static_assert(std::regular_invocable); -static_assert(std::regular_invocable); +static_assert(!std::regular_invocable); +static_assert(!std::regular_invocable); } // namespace function_objects namespace pointer_to_member_functions {