zeus_expected: add package (#3753)

* zeus_expected: add package

* zeus_expected: change test

* zeus_expected: add patch

* zeus_expected: fix sha256 of patch

* zeus_expected: change test

* zeus_expected: change sha256

* zeus_expected: Move `/Zc:__cplusplus` to `on_install` callback

* zeus_expected: move `/Zc:__cplusplus` to on_test callback
pull/3755/head
Chi Huu Huynh 8 months ago committed by GitHub
parent 62fc740ce1
commit fec13704da
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 40
      packages/z/zeus_expected/patches/v1.0.0/fix_typename.patch
  2. 30
      packages/z/zeus_expected/xmake.lua

@ -0,0 +1,40 @@
diff --git a/include/zeus/expected.hpp b/include/zeus/expected.hpp
index 50c286f..fa29889 100644
--- a/include/zeus/expected.hpp
+++ b/include/zeus/expected.hpp
@@ -1778,7 +1778,7 @@ public:
{
using U = expected_detail::remove_cvref_t<std::invoke_result_t<F, decltype(std::move(this->m_val))>>;
static_assert(expected_detail::is_specialization_v<U, expected>, "U (return type of F) must be specialization of expected");
- static_assert(std::is_same_v<U::error_type, E>, "The error type must be the same after calling the F");
+ static_assert(std::is_same_v<typename U::error_type, E>, "The error type must be the same after calling the F");
if (has_value())
return std::invoke(std::forward<F>(f), std::move(this->m_val));
@@ -1790,7 +1790,7 @@ public:
{
using U = expected_detail::remove_cvref_t<std::invoke_result_t<F, decltype(std::move(this->m_val))>>;
static_assert(expected_detail::is_specialization_v<U, expected>, "U (return type of F) must be specialization of expected");
- static_assert(std::is_same_v<U::error_type, E>, "The error type must be the same after calling the F");
+ static_assert(std::is_same_v<typename U::error_type, E>, "The error type must be the same after calling the F");
if (has_value())
return std::invoke(std::forward<F>(f), std::move(this->m_val));
@@ -2469,7 +2469,7 @@ public:
{
using U = expected_detail::remove_cvref_t<std::invoke_result_t<F>>;
static_assert(expected_detail::is_specialization_v<U, expected>, "U (return type of F) must be specialization of expected");
- static_assert(std::is_same_v<U::error_type, E>, "The error type must be the same after calling the F");
+ static_assert(std::is_same_v<typename U::error_type, E>, "The error type must be the same after calling the F");
if (has_value())
return std::invoke(std::forward<F>(f));
@@ -2481,7 +2481,7 @@ public:
{
using U = expected_detail::remove_cvref_t<std::invoke_result_t<F>>;
static_assert(expected_detail::is_specialization_v<U, expected>, "U (return type of F) must be specialization of expected");
- static_assert(std::is_same_v<U::error_type, E>, "The error type must be the same after calling the F");
+ static_assert(std::is_same_v<typename U::error_type, E>, "The error type must be the same after calling the F");
if (has_value())
return std::invoke(std::forward<F>(f));

@ -0,0 +1,30 @@
package("zeus_expected")
set_kind("library", {headeronly = true})
set_homepage("https://github.com/zeus-cpp/expected")
set_description("Backporting std::expected to C++17.")
set_license("MIT")
add_urls("https://github.com/zeus-cpp/expected/archive/refs/tags/$(version).tar.gz",
"https://github.com/zeus-cpp/expected.git")
add_versions("v1.0.0", "a0d81798b777f9bfcc1e1e4f3046632067bd8c6071dbfcbec5012a31a5aebc68")
add_patches("v1.0.0", path.join(os.scriptdir(), "patches", "v1.0.0", "fix_typename.patch"), "710d71f8c765a2937df25a2c52abec24f5f4ef5f43281f6aa01853d0498e2a47")
on_install(function (package)
os.cp("include", package:installdir())
end)
on_test(function (package)
local cxflags = {}
if package:is_plat("windows") then
table.insert(cxflags, "/Zc:__cplusplus")
end
assert(package:check_cxxsnippets({test = [[
#include <zeus/expected.hpp>
void test() {
zeus::expected<int, int> e1 = 42;
zeus::expected<int, int> e2 = zeus::unexpected(42);
}
]]}, {configs = {languages = "cxx17", cxflags = cxflags}}))
end)
Loading…
Cancel
Save