最近用 C++的时候遇到了对variadic template 解包的问题,在 StackOverflow 上也找了好多,但始终没形成一个好的思路,所以来 V 站求助下。
问题如下:
采用 C++ 14 。
函数接受至少一个参数,可能有多个参数,第一个参数 arg1 是确定的类型 T 。后面的参数 args 会有不同的类型, 如 int/ string /custom_class 等.
根据 args 参数不同,调用不同的函数,或者是返回 bool 类型。
args
中含 int, 则认为传入的是 dim, 执行 funcDim()
;args
中含 string, 则认为传入的是 name, 执行 funName()
.想把主函数指针写成如下形式:
template <typename T, typename ... Ts>
auto funcPtr = std::function< bool (T arg1, Ts ... args)>;
请问:
std::make_tuple(args ...)
, 但这个感觉不是很优雅,而且转换一次有效率损失。请问有什么好的方法呢?这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.