MCPcopy Create free account
hub / github.com/boostorg/hana / switch_

Function switch_

example/tutorial/quickstart.switchAny.cpp:49–67  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47//! [switch_]
48template <typename Any>
49auto switch_(Any& a) {
50 return [&a](auto ...cases_) {
51 auto cases = hana::make_tuple(cases_...);
52
53 auto default_ = hana::find_if(cases, [](auto const& c) {
54 return hana::first(c) == hana::type_c<default_t>;
55 });
56 static_assert(default_ != hana::nothing,
57 "switch is missing a default_ case");
58
59 auto rest = hana::filter(cases, [](auto const& c) {
60 return hana::first(c) != hana::type_c<default_t>;
61 });
62
63 return hana::unpack(rest, [&](auto& ...rest) {
64 return process(a, a.type(), hana::second(*default_), rest...);
65 });
66 };
67}
68//! [switch_]
69//! [full]
70

Callers 1

mainFunction · 0.85

Calls 4

firstClass · 0.85
processFunction · 0.85
secondClass · 0.85
find_ifClass · 0.70

Tested by

no test coverage detected