From c8a04300dac538b7ae6e907848593e785a8f0112 Mon Sep 17 00:00:00 2001 From: Sy Brand Date: Sat, 12 Jul 2025 10:42:15 +0100 Subject: [PATCH] Conditionally nodiscard --- include/tl/expected.hpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/include/tl/expected.hpp b/include/tl/expected.hpp index 876e594..a2c58f0 100644 --- a/include/tl/expected.hpp +++ b/include/tl/expected.hpp @@ -132,8 +132,14 @@ struct is_trivially_copy_constructible> : std::false_type {}; #define TL_EXPECTED_11_CONSTEXPR constexpr #endif +#if TL_CPLUSPLUS >= 201703L +#define TL_EXPECTED_NODISCARD [[nodiscard]] +#else +#define TL_EXPECTED_NODISCARD +#endif + namespace tl { -template class [[nodiscard]] expected; +template class TL_EXPECTED_NODISCARD expected; #ifndef TL_MONOSTATE_INPLACE_MUTEX #define TL_MONOSTATE_INPLACE_MUTEX @@ -1276,7 +1282,7 @@ private: /// has been destroyed. The initialization state of the contained object is /// tracked by the expected object. template -class [[nodiscard]] expected : +class TL_EXPECTED_NODISCARD expected : private detail::expected_move_assign_base, private detail::expected_delete_ctor_base, private detail::expected_delete_assign_base,