From b9b5bf9afab493b9725e66e5cf04a85a2a26d329 Mon Sep 17 00:00:00 2001 From: Federico Aponte Date: Fri, 22 Sep 2023 00:22:47 +0200 Subject: [PATCH] Extend std C++ include header list (fix #692) --- include/cpp2util.h | 115 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 102 insertions(+), 13 deletions(-) diff --git a/include/cpp2util.h b/include/cpp2util.h index 50928f5d02..143358bda4 100644 --- a/include/cpp2util.h +++ b/include/cpp2util.h @@ -82,10 +82,10 @@ #include #include #include - #include #include #include #include + #include #ifdef __cpp_lib_coroutine #include #endif @@ -113,7 +113,7 @@ // in our -pure-cpp2 "import std;" simulation mode... if you need this, // use mixed mode (not -pure-cpp2) and #include all the headers you need // including this one - // + // // #include #include #if defined(__cpp_lib_format) || (defined(_MSC_VER) && _MSC_VER >= 1929) @@ -153,15 +153,15 @@ #include #include #include - #ifdef __cpp_lib_source_location - #include - #endif #include #ifdef __cpp_lib_semaphore #include #endif #include #include + #ifdef __cpp_lib_source_location + #include + #endif #include #ifdef __cpp_lib_spanstream #include @@ -197,39 +197,128 @@ // Otherwise, we're not in -pure-cpp2 and so just #include // what we need in this header to make this self-contained #else + #include // has the _cpp_* preprocessor defs, include first #include #include + #include + #include + #ifdef __cpp_lib_barrier + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include #include + #include #include + #include + #ifdef __cpp_lib_coroutine + #include + #endif + #include + #include + #include #include #include #include + #include + #include + #include + #if __has_include() + #include + #endif + #include + #include + #include #ifndef CPP2_NO_EXCEPTIONS #include #endif + #include #if defined(__cpp_lib_format) || (defined(_MSC_VER) && _MSC_VER >= 1929) #include #endif + #include + #include + #include + #include + #include + #include + #include + #include #include + #include + #include #include + #ifdef __cpp_lib_latch + #include + #endif #include + #include + #include + #include #include + #ifdef __cpp_lib_memory_resource + #include + #endif + #include #include - #include + #include + #include #include + #include + #include + #include + #include + #include + #include + #include + #ifdef __cpp_lib_semaphore + #include + #endif + #include + #include #if defined(CPP2_USE_SOURCE_LOCATION) #include #endif #include + #ifdef __cpp_lib_spanstream + #include + #endif + #include + #include + #include + #ifdef __cpp_lib_jthread + #include + #endif + #include #include #include + #ifdef __cpp_lib_syncstream + #include + #endif #include + #include #include #include + #include #ifndef CPP2_NO_RTTI #include #endif + #include + #include #include + #include #include #include #endif @@ -483,7 +572,7 @@ template auto Typeid() -> decltype(auto) { #ifdef CPP2_NO_RTTI Type.expects( - !"'any' dynamic casting is disabled with -fno-rtti", // more likely to appear on console + !"'any' dynamic casting is disabled with -fno-rtti", // more likely to appear on console "'any' dynamic casting is disabled with -fno-rtti" // make message available to hooked handlers ); #else @@ -829,7 +918,7 @@ inline auto to_string(std::string const& s) -> std::string const& template inline auto to_string(T const& sv) -> std::string - requires (std::is_convertible_v + requires (std::is_convertible_v && !std::is_convertible_v) { return std::string{sv}; @@ -969,8 +1058,8 @@ auto is( X const& ) -> bool { template< typename C, typename X > requires ( - ( std::is_base_of_v || - ( std::is_polymorphic_v && std::is_polymorphic_v) + ( std::is_base_of_v || + ( std::is_polymorphic_v && std::is_polymorphic_v) ) && !std::is_same_v) auto is( X const& x ) -> bool { return Dynamic_cast(&x) != nullptr; @@ -978,8 +1067,8 @@ auto is( X const& x ) -> bool { template< typename C, typename X > requires ( - ( std::is_base_of_v || - ( std::is_polymorphic_v && std::is_polymorphic_v) + ( std::is_base_of_v || + ( std::is_polymorphic_v && std::is_polymorphic_v) ) && !std::is_same_v) auto is( X const* x ) -> bool { return Dynamic_cast(x) != nullptr; @@ -1610,7 +1699,7 @@ constexpr auto unsafe_narrow( X&& x ) noexcept -> decltype(auto) // Returns a function object that takes a 'value' of the same type as // 'flags', and evaluates to true if and only if 'value' has set all of // the bits set in 'flags' -// +// //----------------------------------------------------------------------- // template