.. _program_listing_file__tmp_ws_src_proxsuite_include_proxsuite_linalg_veg_internal_prologue.hpp: Program Listing for File prologue.hpp ===================================== |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/proxsuite/include/proxsuite/linalg/veg/internal/prologue.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifdef VEG_PROLOGUE #error "missing epilogue" #endif #define VEG_PROLOGUE #if (__cplusplus >= 202002L || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002)) #define VEG_WITH_CXX20_SUPPORT #endif #if (__cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703)) #define VEG_WITH_CXX17_SUPPORT #endif #if (__cplusplus >= 201402L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201403)) #define VEG_WITH_CXX14_SUPPORT #endif #if (__cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) #define VEG_WITH_CXX11_SUPPORT #endif #define VEG_ALWAYS_NOEXCEPT noexcept #ifdef __VEG_DISABLE_NOEXCEPT #define VEG_NOEXCEPT noexcept(false) #define VEG_NOEXCEPT_IF(...) \ noexcept(VEG_WRAP_SILENCE_WARNING((__VA_ARGS__)) && false) #define VEG_IS_NOEXCEPT(Expr) noexcept(Expr) #else #define VEG_NOEXCEPT noexcept(true) #define VEG_NOEXCEPT_IF(...) noexcept(VEG_WRAP_SILENCE_WARNING(__VA_ARGS__)) #define VEG_IS_NOEXCEPT(Expr) noexcept(Expr) #endif #define VEG_NOEXCEPT_LIKE(Expr) VEG_NOEXCEPT_IF(VEG_IS_NOEXCEPT(Expr)) #define VEG_HAS_BUILTIN_OR_0(True, False) __VEG_PP_REMOVE_PAREN(False) #define VEG_HAS_BUILTIN_OR_1(True, False) __VEG_PP_REMOVE_PAREN(True) #define VEG_HAS_BUILTIN_OR(Builtin, True, False) \ __VEG_PP_CAT(VEG_HAS_BUILTIN_OR_, VEG_HAS_BUILTIN(Builtin))(True, False) #define VEG_DEF_CONCEPT_FROM_BUILTIN_OR_TRAIT(Tpl, Trait, Std_Trait, ...) \ VEG_DEF_CONCEPT( \ Tpl, \ Trait, \ VEG_HAS_BUILTIN_OR(__VEG_PP_CAT(__, Std_Trait), \ ((::proxsuite::linalg::veg::_detail::assert_complete< \ ::proxsuite::linalg::veg::_detail::Wrapper< \ __VEG_PP_HEAD(__VA_ARGS__)>>(), \ __VEG_PP_CAT(__, Std_Trait)(__VA_ARGS__))), \ (::std::Std_Trait<__VA_ARGS__>::value))) #define VEG_DEF_CONCEPT_FROM_BUILTIN_OR_STD(Tpl, Trait, ...) \ VEG_DEF_CONCEPT_FROM_BUILTIN_OR_TRAIT( \ Tpl, Trait, __VEG_PP_CAT(is_, Trait), __VA_ARGS__) #define VEG_EXPLICIT_COPY(Class) \ ~Class() = default; \ Class(Class&&) = default; \ explicit Class(Class const&) = default; \ auto operator=(Class&&)&->Class& = default; \ auto operator=(Class const&)&->Class& = default #define VEG_NO_COPY(Class) \ ~Class() = default; \ Class(Class&&) = default; \ Class(Class const&) = delete; \ auto operator=(Class&&)&->Class& = default; \ auto operator=(Class const&)&->Class& = delete #ifdef VEG_WITH_CXX14_SUPPORT #define VEG_CPP14(...) __VA_ARGS__ #else #define VEG_CPP14(...) #endif #ifdef VEG_WITH_CXX17_SUPPORT #define VEG_CPP17(...) __VA_ARGS__ #else #define VEG_CPP17(...) #endif #ifdef VEG_WITH_CXX20_SUPPORT #define VEG_CPP20(...) __VA_ARGS__ #else #define VEG_CPP20(...) #endif #if defined(__has_builtin) #define VEG_HAS_BUILTIN(x) __has_builtin(x) #else #define VEG_HAS_BUILTIN(x) 0 #endif #ifdef VEG_WITH_CXX17_SUPPORT #define VEG_NODISCARD [[nodiscard]] #elif defined(__clang__) #define VEG_NODISCARD HEDLEY_WARN_UNUSED_RESULT #else #define VEG_NODISCARD #endif #define VEG_INTERNAL_ASSERT_PRECONDITION VEG_ASSERT #define VEG_INTERNAL_ASSERT_PRECONDITIONS VEG_ASSERT_ALL_OF #ifdef __VEG_INTERNAL_ASSERTIONS #define VEG_INTERNAL_ASSERT_INVARIANT(...) \ VEG_ASSERT_ELSE("inner assertion failed", __VA_ARGS__) #else #define VEG_INTERNAL_ASSERT_INVARIANT(...) \ (VEG_DEBUG_ASSERT_ELSE("inner assertion failed", __VA_ARGS__), \ HEDLEY_UNREACHABLE()) #endif #ifdef __VEG_DISABLE_NOEXCEPT #undef VEG_INTERNAL_ASSERT_PRECONDITION #undef VEG_INTERNAL_ASSERT_PRECONDITIONS #undef VEG_INTERNAL_ASSERT_INVARIANT #define VEG_INTERNAL_ASSERT_PRECONDITIONS(...) \ VEG_INTERNAL_ASSERT_PRECONDITION( \ ::proxsuite::linalg::veg::_detail::all_of({ __VA_ARGS__ })) #define VEG_INTERNAL_ASSERT_PRECONDITION(Cond) \ (bool(Cond) ? (void)0 : ((throw 0) /* NOLINT */, (void)0)) #define VEG_INTERNAL_ASSERT_INVARIANT(...) \ (bool(__VA_ARGS__) ? (void)0 : ((throw 0), (void)0)) #endif #ifdef VEG_WITH_CXX14_SUPPORT #define VEG_IGNORE_CPP14_EXTENSION_WARNING(...) __VA_ARGS__ #else #define VEG_IGNORE_CPP14_EXTENSION_WARNING(...) #endif #ifdef VEG_WITH_CXX20_SUPPORT #define VEG_ABI _20 #elif defined(VEG_WITH_CXX17_SUPPORT) #define VEG_ABI _17 #elif defined(VEG_WITH_CXX14_SUPPORT) #define VEG_ABI _14 #elif defined(VEG_WITH_CXX11_SUPPORT) #define VEG_ABI _11 #else #error "[veg] c++ standards earlier than c++11 are not supported" #endif #define VEG_ABI_VERSION v0 #ifdef VEG_MODE_DOCS #define VEG_DOC(...) __VA_ARGS__ #define VEG_DOC_LOCATION char loc[__LINE__] = __FILE__ #else #define VEG_DOC(...) #define VEG_DOC_LOCATION VEG_NOM_SEMICOLON #endif #define VEG_DOC_FN VEG_DOC_LOCATION; /* proxsuite::linalg::veg::@func */ #define VEG_DOC_CTOR VEG_DOC_LOCATION; /* proxsuite::linalg::veg::@ctor */ #define VEG_DOC_CLASS VEG_DOC_LOCATION; /* proxsuite::linalg::veg::@class */