0
我想写你打电话像这样的功能:匹配可变参数模板参数传递给拉姆达参数
f("a", 1, [](float a ) { … });
f("a", 1, "b", 2, [](float a, float b ) { … });
f("a", 1, "b", 2, "c", 3, [](float a, float b, float c) { … });
函数功能是无关紧要的。的一点是,每对字符* /整数参数f
对应于浮动参数来lambda函数。我得到尽可能的:
template <typename ...Args>
void f(Args... args, std::function<void(???)> cb);
我怎样才能申报仿函数类型,以便其参数的基数输入对的基数相匹配?
你需要的模板是'F'的特定那么其他重载可以在参数不是这些类型时选择?如果是的话,你需要一个SFINAE技术。如果没有,我建议你做的模板比较一般,而在模板定义添加一个'static_assert',使其更容易调试不正确的电话。 – aschepler 2012-08-12 07:46:10
为什么不使用像'模板无效F(参数数量&&参数... args,T FUNC)'? –
kennytm
2012-08-12 07:49:34
@aschepler:该功能将仅重载对'字符*'/'int'的。当你说“SFINAE”时,你的意思是像KennyTM的建议吗? – 2012-08-12 08:19:41