14#ifndef IOX2_BB_DETAIL_ATTRIBUTES_HPP
15#define IOX2_BB_DETAIL_ATTRIBUTES_HPP
43#define IOX2_DISCARD_RESULT(expr) ::iox2::bb::detail::iox2_discard_result_impl(expr)
48#if defined(_MSVC_LANG) && (_MSVC_LANG > __cplusplus)
49#define IOX2_CXX_STANDARD_VERSION _MSVC_LANG
51#define IOX2_CXX_STANDARD_VERSION __cplusplus
56#if IOX2_CXX_STANDARD_VERSION >= 201703L
57#define IOX2_NO_DISCARD [[nodiscard]]
59#define IOX2_NO_DISCARD
68#if IOX2_CXX_STANDARD_VERSION >= 201703L
70#define IOX2_FALLTHROUGH [[fallthrough]]
71#elif (defined(__GNUC__) && (__GNUC__ >= 7)) || defined(__clang__)
72#define IOX2_FALLTHROUGH [[gnu::fallthrough]]
74#define IOX2_FALLTHROUGH
79#if IOX2_CXX_STANDARD_VERSION >= 201703L
80#define IOX2_MAYBE_UNUSED [[maybe_unused]]
81#elif (defined(__GNUC__) && (__GNUC__ >= 7)) || defined(__clang__)
82#define IOX2_MAYBE_UNUSED [[gnu::unused]]
84#define IOX2_MAYBE_UNUSED
89#if IOX2_CXX_STANDARD_VERSION >= 202002L
90#define IOX2_HAS_CONSTEXPR_DTOR 1
91#define IOX2_CONSTEXPR_DTOR constexpr
93#define IOX2_HAS_CONSTEXPR_DTOR 0
94#define IOX2_CONSTEXPR_DTOR
void iox2_discard_result_impl(T &&) noexcept