Skip to content

Commit 7009017

Browse files
committed
feat: add version and inlined abi namespace
1 parent d4b920d commit 7009017

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

include/zeus/expected.hpp

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
#include <type_traits>
77
#include <utility>
88

9+
#define ZEUS_EXPECTED_VERSION_MAJOR 1
10+
#define ZEUS_EXPECTED_VERSION_MINOR 0
11+
#define ZEUS_EXPECTED_VERSION_PATCH 0
12+
913
#if __cplusplus < 201'703L
1014
static_assert(false, "This expected variant requires C++17");
1115
#endif
@@ -16,8 +20,32 @@ static_assert(false, "This expected variant requires C++17");
1620
#define ZEUS_EXPECTED_CONSTEXPR_DTOR
1721
#endif
1822

19-
namespace zeus
20-
{
23+
#define ZEUS_EXPECTED_ABI_TAG expected_abi
24+
25+
#define ZEUS_EXPECTED_NS_VERSION_CONCAT_EX(major, minor, patch) _v##major##_##minor##_##patch
26+
#define ZEUS_EXPECTED_NS_VERSION_CONCAT(major, minor, patch) ZEUS_EXPECTED_NS_VERSION_CONCAT_EX(major, minor, patch)
27+
28+
#define ZEUS_EXPECTED_NS_VERSION \
29+
ZEUS_EXPECTED_NS_VERSION_CONCAT(ZEUS_EXPECTED_VERSION_MAJOR, ZEUS_EXPECTED_VERSION_MINOR, ZEUS_EXPECTED_VERSION_PATCH)
30+
31+
#define ZEUS_EXPECTED_NS_CONCAT_EX(a, b) a##b
32+
#define ZEUS_EXPECTED_NS_CONCAT(a, b) ZEUS_EXPECTED_NS_CONCAT_EX(a, b)
33+
34+
#ifndef ZEUS_EXPECTED_NAMESPACE
35+
#define ZEUS_EXPECTED_NAMESPACE zeus::ZEUS_EXPECTED_NS_CONCAT(ZEUS_EXPECTED_ABI_TAG, ZEUS_EXPECTED_NS_VERSION)
36+
#endif
37+
38+
#define ZEUS_EXPECTED_NS_BEGIN \
39+
namespace zeus \
40+
{ \
41+
inline namespace ZEUS_EXPECTED_NS_CONCAT(ZEUS_EXPECTED_ABI_TAG, ZEUS_EXPECTED_NS_VERSION) \
42+
{
43+
44+
#define ZEUS_EXPECTED_NS_END \
45+
} \
46+
}
47+
48+
ZEUS_EXPECTED_NS_BEGIN
2149

2250
namespace expected_detail
2351
{
@@ -2714,6 +2742,6 @@ constexpr void swap(expected<void, E> &lhs, expected<void, E> &rhs) noexcept(noe
27142742
lhs.swap(rhs);
27152743
}
27162744

2717-
} // namespace zeus
2745+
ZEUS_EXPECTED_NS_END
27182746

27192747
#endif

0 commit comments

Comments
 (0)