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 @@ -229,12 +229,21 @@ static_assert(std::invocable); static_assert(std::invocable); static_assert(std::invocable); +#ifndef _MSC_VER +// With MSVC 19.28 and newer, this test passes. However Clang currently only +// mimics the old MSVC behaviour where this assert fails, regardless of what +// version of MSVC it targets. static_assert(!std::invocable); +#endif +static_assert(!std::invocable); static_assert(std::invocable); static_assert(std::invocable); static_assert(std::invocable); static_assert(std::invocable); +#ifndef _MSC_VER static_assert(!std::invocable); +#endif +static_assert(!std::invocable); static_assert(std::invocable); static_assert(std::invocable); } // namespace function_objects 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 @@ -255,12 +255,21 @@ static_assert(std::regular_invocable); static_assert(std::regular_invocable); static_assert(std::regular_invocable); +#ifndef _MSC_VER +// With MSVC 19.28 and newer, this test passes. However Clang currently only +// mimics the old MSVC behaviour where this assert fails, regardless of what +// version of MSVC it targets. static_assert(!std::regular_invocable); +#endif +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); +#ifndef _MSC_VER static_assert(!std::regular_invocable); +#endif +static_assert(!std::regular_invocable); static_assert(std::regular_invocable); static_assert(std::regular_invocable); } // namespace function_objects