diff options
Diffstat (limited to 'nihil.match')
| -rw-r--r-- | nihil.match/CMakeLists.txt | 22 | ||||
| -rw-r--r-- | nihil.match/match.ccm | 18 | ||||
| -rw-r--r-- | nihil.match/test.cc | 30 |
3 files changed, 0 insertions, 70 deletions
diff --git a/nihil.match/CMakeLists.txt b/nihil.match/CMakeLists.txt deleted file mode 100644 index da59663..0000000 --- a/nihil.match/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -# This source code is released into the public domain. - -add_library(nihil.match STATIC) -target_link_libraries(nihil.match PRIVATE nihil.std) -target_sources(nihil.match - PUBLIC FILE_SET modules TYPE CXX_MODULES FILES - match.ccm -) - -if(NIHIL_TESTS) - enable_testing() - - add_executable(nihil.match.test test.cc) - target_link_libraries(nihil.match.test PRIVATE - nihil.match - Catch2::Catch2WithMain - ) - - include(CTest) - include(Catch) - catch_discover_tests(nihil.match.test) -endif() diff --git a/nihil.match/match.ccm b/nihil.match/match.ccm deleted file mode 100644 index 03730bb..0000000 --- a/nihil.match/match.ccm +++ /dev/null @@ -1,18 +0,0 @@ -// This source code is released into the public domain. -export module nihil.match; - -import nihil.std; - -namespace nihil { - -export template<class... Ts> -struct match : Ts... { using Ts::operator()...; }; - -export template<typename... Ts, typename... Fs> -[[nodiscard]] constexpr decltype(auto) operator| - (std::variant<Ts...> const &v, match<Fs...> const &match) -{ - return std::visit(match, v); -} - -} // namespace nihil diff --git a/nihil.match/test.cc b/nihil.match/test.cc deleted file mode 100644 index 974a58a..0000000 --- a/nihil.match/test.cc +++ /dev/null @@ -1,30 +0,0 @@ -// This source code is released into the public domain. - -#include <catch2/catch_test_macros.hpp> - -import nihil.std; -import nihil.match; - -TEST_CASE("match", "[nihil]") -{ - using namespace nihil; - using namespace std::literals; - - auto v = std::variant<int, std::string>(42); - - auto s = v | match { - [](int) { return "int"s; }, - [](std::string const &) { return "string"s; } - }; - - REQUIRE(s == "int"); - - v = "test"s; - - s = v | match { - [](int) { return "int"s; }, - [](std::string const &) { return "string"s; } - }; - - REQUIRE(s == "string"); -} |
