From aa9df8bbedaa240e9225c965ea89766fb86888fb Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期二, 13 十二月 2022 16:11:00 +0800 Subject: [PATCH] robust --- cbhomeclient.cpp | 11 ++++------- 1 files changed, 4 insertions(+), 7 deletions(-) diff --git a/cbhomeclient.cpp b/cbhomeclient.cpp index 574dcfd..4de08e7 100644 --- a/cbhomeclient.cpp +++ b/cbhomeclient.cpp @@ -57,8 +57,7 @@ }; /////////////////////////////////////////////////////////// - -template <size_t... I, class T> +template <size_t... I, class T, typename enable_if<(sizeof...(I) > 0)>::type* = nullptr> auto crop(T&& t) -> decltype(make_tuple(get<I>(std::forward<T>(t))...)){ return make_tuple(get<I>(std::forward<T>(t))...); } @@ -79,7 +78,7 @@ return m; } -template <size_t... Is, class F, class... Args> +template <size_t... Is, class F, class... Args, typename enable_if<(sizeof...(Args) > 0)>::type* = nullptr> Msg to_bus(client* cli, F&& f, Args&&... args){ Msg mesg; if (std::forward<F>(f)(cli->bus, std::forward<Args>(args)...)) @@ -87,8 +86,7 @@ return mesg; } -MsgCR parse(client*, const tuple<>&){ return dummy();} -template <class... Args> +template <class... Args, typename enable_if<sizeof...(Args) == 2>::type* = nullptr> MsgCR parse(client* cli, const tuple<Args...>& tp){ MsgCR msg(dummy()); MsgCommonReply m; @@ -113,8 +111,7 @@ MsgCR to_center(client* cli, F&& f, Args&&... args){ MsgCR msg(dummy()); auto vmsg = std::move(to_bus<Is...>(cli, std::forward<F>(f), std::forward<Args>(args)...)); - if (!vmsg.empty()) - msg = std::move(parse(cli, vmsg.at(0))); + if (!vmsg.empty()) msg = std::move(parse(cli, vmsg.at(0))); return msg; } -- Gitblit v1.8.0