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