Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:59:14

0001 /* Try operation macros
0002 (C) 2017-2024 Niall Douglas <http://www.nedproductions.biz/> (20 commits)
0003 File Created: July 2017
0004 
0005 
0006 Boost Software License - Version 1.0 - August 17th, 2003
0007 
0008 Permission is hereby granted, free of charge, to any person or organization
0009 obtaining a copy of the software and accompanying documentation covered by
0010 this license (the "Software") to use, reproduce, display, distribute,
0011 execute, and transmit the Software, and to prepare derivative works of the
0012 Software, and to permit third-parties to whom the Software is furnished to
0013 do so, all subject to the following:
0014 
0015 The copyright notices in the Software and this entire statement, including
0016 the above license grant, this restriction and the following disclaimer,
0017 must be included in all copies of the Software, in whole or in part, and
0018 all derivative works of the Software, unless such copies or derivative
0019 works are solely in the form of machine-executable object code generated by
0020 a source language processor.
0021 
0022 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0023 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0024 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
0025 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
0026 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
0027 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
0028 DEALINGS IN THE SOFTWARE.
0029 */
0030 
0031 #ifndef BOOST_OUTCOME_TRY_HPP
0032 #define BOOST_OUTCOME_TRY_HPP
0033 
0034 #include "detail/try.h"
0035 #include "success_failure.hpp"
0036 
0037 BOOST_OUTCOME_V2_NAMESPACE_BEGIN
0038 
0039 namespace detail
0040 {
0041   struct has_value_overload
0042   {
0043   };
0044   struct as_failure_overload
0045   {
0046   };
0047   struct assume_error_overload
0048   {
0049   };
0050   struct error_overload
0051   {
0052   };
0053   struct assume_value_overload
0054   {
0055   };
0056   struct value_overload
0057   {
0058   };
0059   // #ifdef __APPLE__
0060   //   BOOST_OUTCOME_TEMPLATE(class T, class R = decltype(std::declval<T>()._xcode_workaround_as_failure()))
0061   // #else
0062   BOOST_OUTCOME_TEMPLATE(class T, class R = decltype(std::declval<T>().as_failure()))
0063   // #endif
0064   BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TPRED(BOOST_OUTCOME_V2_NAMESPACE::is_failure_type<R>))
0065   constexpr inline bool has_as_failure(int /*unused */)
0066   {
0067     return true;
0068   }
0069   template <class T> constexpr inline bool has_as_failure(...)
0070   {
0071     return false;
0072   }
0073   BOOST_OUTCOME_TEMPLATE(class T)
0074   BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TEXPR(std::declval<T>().assume_error()))
0075   constexpr inline bool has_assume_error(int /*unused */)
0076   {
0077     return true;
0078   }
0079   template <class T> constexpr inline bool has_assume_error(...)
0080   {
0081     return false;
0082   }
0083   BOOST_OUTCOME_TEMPLATE(class T)
0084   BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TEXPR(std::declval<T>().error()))
0085   constexpr inline bool has_error(int /*unused */)
0086   {
0087     return true;
0088   }
0089   template <class T> constexpr inline bool has_error(...)
0090   {
0091     return false;
0092   }
0093   BOOST_OUTCOME_TEMPLATE(class T)
0094   BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TEXPR(std::declval<T>().assume_value()))
0095   constexpr inline bool has_assume_value(int /*unused */)
0096   {
0097     return true;
0098   }
0099   template <class T> constexpr inline bool has_assume_value(...)
0100   {
0101     return false;
0102   }
0103   BOOST_OUTCOME_TEMPLATE(class T)
0104   BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TEXPR(std::declval<T>().value()))
0105   constexpr inline bool has_value(int /*unused */)
0106   {
0107     return true;
0108   }
0109   template <class T> constexpr inline bool has_value(...)
0110   {
0111     return false;
0112   }
0113 }  // namespace detail
0114 
0115 /*! AWAITING HUGO JSON CONVERSION TOOL
0116 SIGNATURE NOT RECOGNISED
0117 */
0118 BOOST_OUTCOME_TEMPLATE(class T)
0119 BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TEXPR(std::declval<T>().has_value()))
0120 constexpr inline bool try_operation_has_value(T &&v, detail::has_value_overload = {})
0121 {
0122   return v.has_value();
0123 }
0124 
0125 /*! AWAITING HUGO JSON CONVERSION TOOL
0126 SIGNATURE NOT RECOGNISED
0127 */
0128 BOOST_OUTCOME_TEMPLATE(class T)
0129 BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TPRED(detail::has_as_failure<T>(5)))
0130 constexpr inline decltype(auto) try_operation_return_as(T &&v, detail::as_failure_overload = {})
0131 {
0132   return static_cast<T &&>(v).as_failure();
0133 }
0134 /*! AWAITING HUGO JSON CONVERSION TOOL
0135 SIGNATURE NOT RECOGNISED
0136 */
0137 BOOST_OUTCOME_TEMPLATE(class T)
0138 BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TPRED(!detail::has_as_failure<T>(5) && detail::has_assume_error<T>(5)))
0139 constexpr inline decltype(auto) try_operation_return_as(T &&v, detail::assume_error_overload = {})
0140 {
0141   return failure(static_cast<T &&>(v).assume_error());
0142 }
0143 /*! AWAITING HUGO JSON CONVERSION TOOL
0144 SIGNATURE NOT RECOGNISED
0145 */
0146 BOOST_OUTCOME_TEMPLATE(class T)
0147 BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TPRED(!detail::has_as_failure<T>(5) && !detail::has_assume_error<T>(5) && detail::has_error<T>(5)))
0148 constexpr inline decltype(auto) try_operation_return_as(T &&v, detail::error_overload = {})
0149 {
0150   return failure(static_cast<T &&>(v).error());
0151 }
0152 
0153 /*! AWAITING HUGO JSON CONVERSION TOOL
0154 SIGNATURE NOT RECOGNISED
0155 */
0156 BOOST_OUTCOME_TEMPLATE(class T)
0157 BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TPRED(detail::has_assume_value<T>(5)))
0158 constexpr inline decltype(auto) try_operation_extract_value(T &&v, detail::assume_value_overload = {})
0159 {
0160   return static_cast<T &&>(v).assume_value();
0161 }
0162 /*! AWAITING HUGO JSON CONVERSION TOOL
0163 SIGNATURE NOT RECOGNISED
0164 */
0165 BOOST_OUTCOME_TEMPLATE(class T)
0166 BOOST_OUTCOME_TREQUIRES(BOOST_OUTCOME_TPRED(!detail::has_assume_value<T>(5) && detail::has_value<T>(5)))
0167 constexpr inline decltype(auto) try_operation_extract_value(T &&v, detail::value_overload = {})
0168 {
0169   return static_cast<T &&>(v).value();
0170 }
0171 
0172 BOOST_OUTCOME_V2_NAMESPACE_END
0173 
0174 #if !defined(__clang__) && defined(__GNUC__) && __GNUC__ >= 8
0175 #pragma GCC diagnostic push
0176 #pragma GCC diagnostic ignored "-Wparentheses"
0177 #endif
0178 
0179 // Use if(!expr); else as some compilers assume else clauses are always unlikely
0180 #define BOOST_OUTCOME_TRYV2_SUCCESS_LIKELY(unique, retstmt, spec, ...)                                                                                               \
0181   BOOST_OUTCOME_TRYV2_UNIQUE_STORAGE(unique, spec, __VA_ARGS__);                                                                                                     \
0182   BOOST_OUTCOME_TRY_LIKELY_IF(::BOOST_OUTCOME_V2_NAMESPACE::try_operation_has_value(unique));                                                                              \
0183   else                                                                                                                                                         \
0184   { /* works around ICE in GCC's coroutines implementation */                                                                                                  \
0185     auto unique##_f(::BOOST_OUTCOME_V2_NAMESPACE::try_operation_return_as(static_cast<decltype(unique) &&>(unique)));                                                \
0186     retstmt unique##_f;                                                                                                                                        \
0187   }
0188 #define BOOST_OUTCOME_TRYV3_FAILURE_LIKELY(unique, retstmt, spec, ...)                                                                                               \
0189   BOOST_OUTCOME_TRYV2_UNIQUE_STORAGE(unique, spec, __VA_ARGS__);                                                                                                     \
0190   BOOST_OUTCOME_TRY_LIKELY_IF(!BOOST_OUTCOME_V2_NAMESPACE::try_operation_has_value(unique))                                                                                \
0191   { /* works around ICE in GCC's coroutines implementation */                                                                                                  \
0192     auto unique##_f(::BOOST_OUTCOME_V2_NAMESPACE::try_operation_return_as(static_cast<decltype(unique) &&>(unique)));                                                \
0193     retstmt unique##_f;                                                                                                                                        \
0194   }
0195 
0196 #define BOOST_OUTCOME_TRY2_SUCCESS_LIKELY(unique, retstmt, var, ...)                                                                                                 \
0197   BOOST_OUTCOME_TRYV2_SUCCESS_LIKELY(unique, retstmt, var, __VA_ARGS__);                                                                                             \
0198   BOOST_OUTCOME_TRY2_VAR(var) = ::BOOST_OUTCOME_V2_NAMESPACE::try_operation_extract_value(static_cast<decltype(unique) &&>(unique))
0199 #define BOOST_OUTCOME_TRY2_FAILURE_LIKELY(unique, retstmt, var, ...)                                                                                                 \
0200   BOOST_OUTCOME_TRYV3_FAILURE_LIKELY(unique, retstmt, var, __VA_ARGS__);                                                                                             \
0201   BOOST_OUTCOME_TRY2_VAR(var) = ::BOOST_OUTCOME_V2_NAMESPACE::try_operation_extract_value(static_cast<decltype(unique) &&>(unique))
0202 
0203 /*! AWAITING HUGO JSON CONVERSION TOOL
0204 SIGNATURE NOT RECOGNISED
0205 */
0206 #define BOOST_OUTCOME_TRYV(...) BOOST_OUTCOME_TRYV2_SUCCESS_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, return, deduce, __VA_ARGS__)
0207 /*! AWAITING HUGO JSON CONVERSION TOOL
0208 SIGNATURE NOT RECOGNISED
0209 */
0210 #define BOOST_OUTCOME_TRYV_FAILURE_LIKELY(...) BOOST_OUTCOME_TRYV3_FAILURE_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, return, deduce, __VA_ARGS__)
0211 
0212 /*! AWAITING HUGO JSON CONVERSION TOOL
0213 SIGNATURE NOT RECOGNISED
0214 */
0215 #define BOOST_OUTCOME_CO_TRYV(...) BOOST_OUTCOME_TRYV2_SUCCESS_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, co_return, deduce, __VA_ARGS__)
0216 /*! AWAITING HUGO JSON CONVERSION TOOL
0217 SIGNATURE NOT RECOGNISED
0218 */
0219 #define BOOST_OUTCOME_CO_TRYV_FAILURE_LIKELY(...) BOOST_OUTCOME_TRYV3_FAILURE_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, co_return, deduce, __VA_ARGS__)
0220 
0221 /*! AWAITING HUGO JSON CONVERSION TOOL
0222 SIGNATURE NOT RECOGNISED
0223 */
0224 #define BOOST_OUTCOME_TRYV2(s, ...) BOOST_OUTCOME_TRYV2_SUCCESS_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, return, (s, ), __VA_ARGS__)
0225 /*! AWAITING HUGO JSON CONVERSION TOOL
0226 SIGNATURE NOT RECOGNISED
0227 */
0228 #define BOOST_OUTCOME_TRYV2_FAILURE_LIKELY(s, ...) BOOST_OUTCOME_TRYV3_FAILURE_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, return, (s, ), __VA_ARGS__)
0229 
0230 /*! AWAITING HUGO JSON CONVERSION TOOL
0231 SIGNATURE NOT RECOGNISED
0232 */
0233 #define BOOST_OUTCOME_CO_TRYV2(s, ...) BOOST_OUTCOME_TRYV2_SUCCESS_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, co_return, (s, ), __VA_ARGS__)
0234 /*! AWAITING HUGO JSON CONVERSION TOOL
0235 SIGNATURE NOT RECOGNISED
0236 */
0237 #define BOOST_OUTCOME_CO_TRYV2_FAILURE_LIKELY(s, ...) BOOST_OUTCOME_TRYV3_FAILURE_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, co_return, s(, ), __VA_ARGS__)
0238 
0239 
0240 #if defined(__GNUC__) || defined(__clang__)
0241 
0242 #define BOOST_OUTCOME_TRYX2(unique, retstmt, ...)                                                                                                                    \
0243   ({                                                                                                                                                           \
0244     BOOST_OUTCOME_TRYV2_SUCCESS_LIKELY(unique, retstmt, deduce, __VA_ARGS__);                                                                                        \
0245     ::BOOST_OUTCOME_V2_NAMESPACE::try_operation_extract_value(static_cast<decltype(unique) &&>(unique));                                                             \
0246   })
0247 
0248 /*! AWAITING HUGO JSON CONVERSION TOOL
0249 SIGNATURE NOT RECOGNISED
0250 */
0251 #define BOOST_OUTCOME_TRYX(...) BOOST_OUTCOME_TRYX2(BOOST_OUTCOME_TRY_UNIQUE_NAME, return, __VA_ARGS__)
0252 
0253 /*! AWAITING HUGO JSON CONVERSION TOOL
0254 SIGNATURE NOT RECOGNISED
0255 */
0256 #define BOOST_OUTCOME_CO_TRYX(...) BOOST_OUTCOME_TRYX2(BOOST_OUTCOME_TRY_UNIQUE_NAME, co_return, __VA_ARGS__)
0257 #endif
0258 
0259 /*! AWAITING HUGO JSON CONVERSION TOOL
0260 SIGNATURE NOT RECOGNISED
0261 */
0262 #define BOOST_OUTCOME_TRYA(v, ...) BOOST_OUTCOME_TRY2_SUCCESS_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, return, v, __VA_ARGS__)
0263 /*! AWAITING HUGO JSON CONVERSION TOOL
0264 SIGNATURE NOT RECOGNISED
0265 */
0266 #define BOOST_OUTCOME_TRYA_FAILURE_LIKELY(v, ...) BOOST_OUTCOME_TRY2_FAILURE_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, return, v, __VA_ARGS__)
0267 
0268 /*! AWAITING HUGO JSON CONVERSION TOOL
0269 SIGNATURE NOT RECOGNISED
0270 */
0271 #define BOOST_OUTCOME_CO_TRYA(v, ...) BOOST_OUTCOME_TRY2_SUCCESS_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, co_return, v, __VA_ARGS__)
0272 /*! AWAITING HUGO JSON CONVERSION TOOL
0273 SIGNATURE NOT RECOGNISED
0274 */
0275 #define BOOST_OUTCOME_CO_TRYA_FAILURE_LIKELY(v, ...) BOOST_OUTCOME_TRY2_FAILURE_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, co_return, v, __VA_ARGS__)
0276 
0277 
0278 #define BOOST_OUTCOME_TRY_INVOKE_TRY8(a, b, c, d, e, f, g, h) BOOST_OUTCOME_TRYA(a, b, c, d, e, f, g, h)
0279 #define BOOST_OUTCOME_TRY_INVOKE_TRY7(a, b, c, d, e, f, g) BOOST_OUTCOME_TRYA(a, b, c, d, e, f, g)
0280 #define BOOST_OUTCOME_TRY_INVOKE_TRY6(a, b, c, d, e, f) BOOST_OUTCOME_TRYA(a, b, c, d, e, f)
0281 #define BOOST_OUTCOME_TRY_INVOKE_TRY5(a, b, c, d, e) BOOST_OUTCOME_TRYA(a, b, c, d, e)
0282 #define BOOST_OUTCOME_TRY_INVOKE_TRY4(a, b, c, d) BOOST_OUTCOME_TRYA(a, b, c, d)
0283 #define BOOST_OUTCOME_TRY_INVOKE_TRY3(a, b, c) BOOST_OUTCOME_TRYA(a, b, c)
0284 #define BOOST_OUTCOME_TRY_INVOKE_TRY2(a, b) BOOST_OUTCOME_TRYA(a, b)
0285 #define BOOST_OUTCOME_TRY_INVOKE_TRY1(a) BOOST_OUTCOME_TRYV(a)
0286 
0287 /*! AWAITING HUGO JSON CONVERSION TOOL
0288 SIGNATURE NOT RECOGNISED
0289 */
0290 #define BOOST_OUTCOME_TRY(...) BOOST_OUTCOME_TRY_CALL_OVERLOAD(BOOST_OUTCOME_TRY_INVOKE_TRY, __VA_ARGS__)
0291 
0292 #define BOOST_OUTCOME_TRY_FAILURE_LIKELY_INVOKE_TRY8(a, b, c, d, e, f, g, h) BOOST_OUTCOME_TRYA_FAILURE_LIKELY(a, b, c, d, e, f, g, h)
0293 #define BOOST_OUTCOME_TRY_FAILURE_LIKELY_INVOKE_TRY7(a, b, c, d, e, f, g) BOOST_OUTCOME_TRYA_FAILURE_LIKELY(a, b, c, d, e, f, g)
0294 #define BOOST_OUTCOME_TRY_FAILURE_LIKELY_INVOKE_TRY6(a, b, c, d, e, f) BOOST_OUTCOME_TRYA_FAILURE_LIKELY(a, b, c, d, e, f)
0295 #define BOOST_OUTCOME_TRY_FAILURE_LIKELY_INVOKE_TRY5(a, b, c, d, e) BOOST_OUTCOME_TRYA_FAILURE_LIKELY(a, b, c, d, e)
0296 #define BOOST_OUTCOME_TRY_FAILURE_LIKELY_INVOKE_TRY4(a, b, c, d) BOOST_OUTCOME_TRYA_FAILURE_LIKELY(a, b, c, d)
0297 #define BOOST_OUTCOME_TRY_FAILURE_LIKELY_INVOKE_TRY3(a, b, c) BOOST_OUTCOME_TRYA_FAILURE_LIKELY(a, b, c)
0298 #define BOOST_OUTCOME_TRY_FAILURE_LIKELY_INVOKE_TRY2(a, b) BOOST_OUTCOME_TRYA_FAILURE_LIKELY(a, b)
0299 #define BOOST_OUTCOME_TRY_FAILURE_LIKELY_INVOKE_TRY1(a) BOOST_OUTCOME_TRYV_FAILURE_LIKELY(a)
0300 /*! AWAITING HUGO JSON CONVERSION TOOL
0301 SIGNATURE NOT RECOGNISED
0302 */
0303 #define BOOST_OUTCOME_TRY_FAILURE_LIKELY(...) BOOST_OUTCOME_TRY_CALL_OVERLOAD(BOOST_OUTCOME_TRY_FAILURE_LIKELY_INVOKE_TRY, __VA_ARGS__)
0304 
0305 #define BOOST_OUTCOME_CO_TRY_INVOKE_TRY8(a, b, c, d, e, f, g, h) BOOST_OUTCOME_CO_TRYA(a, b, c, d, e, f, g, h)
0306 #define BOOST_OUTCOME_CO_TRY_INVOKE_TRY7(a, b, c, d, e, f, g) BOOST_OUTCOME_CO_TRYA(a, b, c, d, e, f, g)
0307 #define BOOST_OUTCOME_CO_TRY_INVOKE_TRY6(a, b, c, d, e, f) BOOST_OUTCOME_CO_TRYA(a, b, c, d, e, f)
0308 #define BOOST_OUTCOME_CO_TRY_INVOKE_TRY5(a, b, c, d, e) BOOST_OUTCOME_CO_TRYA(a, b, c, d, e)
0309 #define BOOST_OUTCOME_CO_TRY_INVOKE_TRY4(a, b, c, d) BOOST_OUTCOME_CO_TRYA(a, b, c, d)
0310 #define BOOST_OUTCOME_CO_TRY_INVOKE_TRY3(a, b, c) BOOST_OUTCOME_CO_TRYA(a, b, c)
0311 #define BOOST_OUTCOME_CO_TRY_INVOKE_TRY2(a, b) BOOST_OUTCOME_CO_TRYA(a, b)
0312 #define BOOST_OUTCOME_CO_TRY_INVOKE_TRY1(a) BOOST_OUTCOME_CO_TRYV(a)
0313 /*! AWAITING HUGO JSON CONVERSION TOOL
0314 SIGNATURE NOT RECOGNISED
0315 */
0316 #define BOOST_OUTCOME_CO_TRY(...) BOOST_OUTCOME_TRY_CALL_OVERLOAD(BOOST_OUTCOME_CO_TRY_INVOKE_TRY, __VA_ARGS__)
0317 
0318 /*! AWAITING HUGO JSON CONVERSION TOOL
0319 SIGNATURE NOT RECOGNISED
0320 */
0321 #define BOOST_OUTCOME_TRY(...) BOOST_OUTCOME_TRY_CALL_OVERLOAD(BOOST_OUTCOME_TRY_INVOKE_TRY, __VA_ARGS__)
0322 
0323 #define BOOST_OUTCOME_CO_TRY_FAILURE_LIKELY_INVOKE_TRY8(a, b, c, d, e, f, g, h) BOOST_OUTCOME_CO_TRYA_FAILURE_LIKELY(a, b, c, d, e, f, g, h)
0324 #define BOOST_OUTCOME_CO_TRY_FAILURE_LIKELY_INVOKE_TRY7(a, b, c, d, e, f, g) BOOST_OUTCOME_CO_TRYA_FAILURE_LIKELY(a, b, c, d, e, f, g)
0325 #define BOOST_OUTCOME_CO_TRY_FAILURE_LIKELY_INVOKE_TRY6(a, b, c, d, e, f) BOOST_OUTCOME_CO_TRYA_FAILURE_LIKELY(a, b, c, d, e, f)
0326 #define BOOST_OUTCOME_CO_TRY_FAILURE_LIKELY_INVOKE_TRY5(a, b, c, d, e) BOOST_OUTCOME_CO_TRYA_FAILURE_LIKELY(a, b, c, d, e)
0327 #define BOOST_OUTCOME_CO_TRY_FAILURE_LIKELY_INVOKE_TRY4(a, b, c, d) BOOST_OUTCOME_CO_TRYA_FAILURE_LIKELY(a, b, c, d)
0328 #define BOOST_OUTCOME_CO_TRY_FAILURE_LIKELY_INVOKE_TRY3(a, b, c) BOOST_OUTCOME_CO_TRYA_FAILURE_LIKELY(a, b, c)
0329 #define BOOST_OUTCOME_CO_TRY_FAILURE_LIKELY_INVOKE_TRY2(a, b) BOOST_OUTCOME_CO_TRYA_FAILURE_LIKELY(a, b)
0330 #define BOOST_OUTCOME_CO_TRY_FAILURE_LIKELY_INVOKE_TRY1(a) BOOST_OUTCOME_CO_TRYV_FAILURE_LIKELY(a)
0331 /*! AWAITING HUGO JSON CONVERSION TOOL
0332 SIGNATURE NOT RECOGNISED
0333 */
0334 #define BOOST_OUTCOME_CO_TRY_FAILURE_LIKELY(...) BOOST_OUTCOME_TRY_CALL_OVERLOAD(BOOST_OUTCOME_CO_TRY_FAILURE_LIKELY_INVOKE_TRY, __VA_ARGS__)
0335 
0336 
0337 /*! AWAITING HUGO JSON CONVERSION TOOL
0338 SIGNATURE NOT RECOGNISED
0339 */
0340 #define OUTCOME21_TRYA(v, ...) BOOST_OUTCOME_TRY2_SUCCESS_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, return, deduce, auto &&v, __VA_ARGS__)
0341 /*! AWAITING HUGO JSON CONVERSION TOOL
0342 SIGNATURE NOT RECOGNISED
0343 */
0344 #define OUTCOME21_TRYA_FAILURE_LIKELY(v, ...) BOOST_OUTCOME_TRY2_FAILURE_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, return, deduce, auto &&v, __VA_ARGS__)
0345 
0346 /*! AWAITING HUGO JSON CONVERSION TOOL
0347 SIGNATURE NOT RECOGNISED
0348 */
0349 #define OUTCOME21_CO_TRYA(v, ...) BOOST_OUTCOME_TRY2_FAILURE_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, co_return, deduce, auto &&v, __VA_ARGS__)
0350 /*! AWAITING HUGO JSON CONVERSION TOOL
0351 SIGNATURE NOT RECOGNISED
0352 */
0353 #define OUTCOME21_CO_TRYA_FAILURE_LIKELY(v, ...) BOOST_OUTCOME_TRY2_FAILURE_LIKELY(BOOST_OUTCOME_TRY_UNIQUE_NAME, co_retrn, deduce, auto &&v, __VA_ARGS__)
0354 
0355 
0356 #define OUTCOME21_TRY_INVOKE_TRY8(a, b, c, d, e, f, g, h) OUTCOME21_TRYA(a, b, c, d, e, f, g, h)
0357 #define OUTCOME21_TRY_INVOKE_TRY7(a, b, c, d, e, f, g) OUTCOME21_TRYA(a, b, c, d, e, f, g)
0358 #define OUTCOME21_TRY_INVOKE_TRY6(a, b, c, d, e, f) OUTCOME21_TRYA(a, b, c, d, e, f)
0359 #define OUTCOME21_TRY_INVOKE_TRY5(a, b, c, d, e) OUTCOME21_TRYA(a, b, c, d, e)
0360 #define OUTCOME21_TRY_INVOKE_TRY4(a, b, c, d) OUTCOME21_TRYA(a, b, c, d)
0361 #define OUTCOME21_TRY_INVOKE_TRY3(a, b, c) OUTCOME21_TRYA(a, b, c)
0362 #define OUTCOME21_TRY_INVOKE_TRY2(a, b) OUTCOME21_TRYA(a, b)
0363 #define OUTCOME21_TRY_INVOKE_TRY1(a) BOOST_OUTCOME_TRYV(a)
0364 
0365 /*! AWAITING HUGO JSON CONVERSION TOOL
0366 SIGNATURE NOT RECOGNISED
0367 */
0368 #define OUTCOME21_TRY(...) BOOST_OUTCOME_TRY_CALL_OVERLOAD(OUTCOME21_TRY_INVOKE_TRY, __VA_ARGS__)
0369 
0370 #define OUTCOME21_TRY_FAILURE_LIKELY_INVOKE_TRY8(a, b, c, d, e, f, g, h) OUTCOME21_TRYA_FAILURE_LIKELY(a, b, c, d, e, f, g, h)
0371 #define OUTCOME21_TRY_FAILURE_LIKELY_INVOKE_TRY7(a, b, c, d, e, f, g) OUTCOME21_TRYA_FAILURE_LIKELY(a, b, c, d, e, f, g)
0372 #define OUTCOME21_TRY_FAILURE_LIKELY_INVOKE_TRY6(a, b, c, d, e, f) OUTCOME21_TRYA_FAILURE_LIKELY(a, b, c, d, e, f)
0373 #define OUTCOME21_TRY_FAILURE_LIKELY_INVOKE_TRY5(a, b, c, d, e) OUTCOME21_TRYA_FAILURE_LIKELY(a, b, c, d, e)
0374 #define OUTCOME21_TRY_FAILURE_LIKELY_INVOKE_TRY4(a, b, c, d) OUTCOME21_TRYA_FAILURE_LIKELY(a, b, c, d)
0375 #define OUTCOME21_TRY_FAILURE_LIKELY_INVOKE_TRY3(a, b, c) OUTCOME21_TRYA_FAILURE_LIKELY(a, b, c)
0376 #define OUTCOME21_TRY_FAILURE_LIKELY_INVOKE_TRY2(a, b) OUTCOME21_TRYA_FAILURE_LIKELY(a, b)
0377 #define OUTCOME21_TRY_FAILURE_LIKELY_INVOKE_TRY1(a) BOOST_OUTCOME_TRYV_FAILURE_LIKELY(a)
0378 /*! AWAITING HUGO JSON CONVERSION TOOL
0379 SIGNATURE NOT RECOGNISED
0380 */
0381 #define OUTCOME21_TRY_FAILURE_LIKELY(...) BOOST_OUTCOME_TRY_CALL_OVERLOAD(OUTCOME21_TRY_FAILURE_LIKELY_INVOKE_TRY, __VA_ARGS__)
0382 
0383 #define OUTCOME21_CO_TRY_INVOKE_TRY8(a, b, c, d, e, f, g, h) OUTCOME21_CO_TRYA(a, b, c, d, e, f, g, h)
0384 #define OUTCOME21_CO_TRY_INVOKE_TRY7(a, b, c, d, e, f, g) OUTCOME21_CO_TRYA(a, b, c, d, e, f, g)
0385 #define OUTCOME21_CO_TRY_INVOKE_TRY6(a, b, c, d, e, f) OUTCOME21_CO_TRYA(a, b, c, d, e, f)
0386 #define OUTCOME21_CO_TRY_INVOKE_TRY5(a, b, c, d, e) OUTCOME21_CO_TRYA(a, b, c, d, e)
0387 #define OUTCOME21_CO_TRY_INVOKE_TRY4(a, b, c, d) OUTCOME21_CO_TRYA(a, b, c, d)
0388 #define OUTCOME21_CO_TRY_INVOKE_TRY3(a, b, c) OUTCOME21_CO_TRYA(a, b, c)
0389 #define OUTCOME21_CO_TRY_INVOKE_TRY2(a, b) OUTCOME21_CO_TRYA(a, b)
0390 #define OUTCOME21_CO_TRY_INVOKE_TRY1(a) BOOST_OUTCOME_CO_TRYV(a)
0391 /*! AWAITING HUGO JSON CONVERSION TOOL
0392 SIGNATURE NOT RECOGNISED
0393 */
0394 #define OUTCOME21_CO_TRY(...) BOOST_OUTCOME_TRY_CALL_OVERLOAD(OUTCOME21_CO_TRY_INVOKE_TRY, __VA_ARGS__)
0395 
0396 #define OUTCOME21_CO_TRY_FAILURE_LIKELY_INVOKE_TRY8(a, b, c, d, e, f, g, h) OUTCOME21_CO_TRYA_FAILURE_LIKELY(a, b, c, d, e, f, g, h)
0397 #define OUTCOME21_CO_TRY_FAILURE_LIKELY_INVOKE_TRY7(a, b, c, d, e, f, g) OUTCOME21_CO_TRYA_FAILURE_LIKELY(a, b, c, d, e, f, g)
0398 #define OUTCOME21_CO_TRY_FAILURE_LIKELY_INVOKE_TRY6(a, b, c, d, e, f) OUTCOME21_CO_TRYA_FAILURE_LIKELY(a, b, c, d, e, f)
0399 #define OUTCOME21_CO_TRY_FAILURE_LIKELY_INVOKE_TRY5(a, b, c, d, e) OUTCOME21_CO_TRYA_FAILURE_LIKELY(a, b, c, d, e)
0400 #define OUTCOME21_CO_TRY_FAILURE_LIKELY_INVOKE_TRY4(a, b, c, d) OUTCOME21_CO_TRYA_FAILURE_LIKELY(a, b, c, d)
0401 #define OUTCOME21_CO_TRY_FAILURE_LIKELY_INVOKE_TRY3(a, b, c) OUTCOME21_CO_TRYA_FAILURE_LIKELY(a, b, c)
0402 #define OUTCOME21_CO_TRY_FAILURE_LIKELY_INVOKE_TRY2(a, b) OUTCOME21_CO_TRYA_FAILURE_LIKELY(a, b)
0403 #define OUTCOME21_CO_TRY_FAILURE_LIKELY_INVOKE_TRY1(a) BOOST_OUTCOME_CO_TRYV_FAILURE_LIKELY(a)
0404 /*! AWAITING HUGO JSON CONVERSION TOOL
0405 SIGNATURE NOT RECOGNISED
0406 */
0407 #define OUTCOME21_CO_TRY_FAILURE_LIKELY(...) BOOST_OUTCOME_TRY_CALL_OVERLOAD(OUTCOME21_CO_TRY_FAILURE_LIKELY_INVOKE_TRY, __VA_ARGS__)
0408 
0409 
0410 #if !defined(__clang__) && defined(__GNUC__) && __GNUC__ >= 8
0411 #pragma GCC diagnostic pop
0412 #endif
0413 
0414 #endif