12 #include "internal/config.h"
13 #include "internal/utils.h"
28 template <
typename Result,
typename AsCallHandler>
30 AsCallHandler&& handler,
31 std::enable_if_t<!std::is_void_v<Result>,
void*> =
nullptr)
33 PACKIO_STATIC_ASSERT_TTRAIT(AsCallHandler, Result);
34 return [handler = std::forward<AsCallHandler>(handler)](
35 error_code ec, msgpack::object_handle result)
mutable {
37 handler(ec, std::nullopt);
41 handler(ec, std::optional<Result>{result->as<Result>()});
43 catch (msgpack::type_error&) {
45 handler(ec, std::nullopt);
57 template <
typename Result,
typename AsVo
idCallHandler>
59 AsVoidCallHandler&& handler,
60 std::enable_if_t<std::is_void_v<Result>,
void*> =
nullptr)
62 PACKIO_STATIC_ASSERT_TRAIT(AsVoidCallHandler);
63 return [handler = std::forward<AsVoidCallHandler>(handler)](
64 error_code ec, msgpack::object_handle result)
mutable {
65 if (!ec && result->type != msgpack::type::NIL) {