我试图避免外部函数或递归调用,所以我决定测试lambdas的功能,但我被卡住了。如果可能,我将如何使用lambda来解包Args...
?通过Lambdas解压缩可变参数
我试图做std::tie
得到的参数为元组,然后我试着用std::get<I>
,其中I
是一个非const整数但由于获取需要constexpr
失败。
我也尝试初始化列表,我知道会失败,但值得一试。我不想用维基百科的方式去做。我想这样做:
任何想法或注定是?
template<typename... Args>
void fcout(const char* s, Args... args)
{
std::function<void(Args... A)> Unpack = [&](Args... A) {
//Unpack(A...);
};
while (*s)
{
if (*s == '%')
{
if (*(s + 1) == '%')
{
++s;
}
else
{
Unpack(args...);
fcout(s + 1, args...);
return;
}
}
std::cout << *s++;
}
}
“*我试图避免外部函数或递归调用*”您正在使用可变参数模板;外部函数调用和递归*将会发生*。现在最好接受他们。 –
好吧,但我可以使用递归lambda的呢?或者是forloop或者某种可能不存在的C++魔法.. – Brandon
我不知道我是否理解你正在努力实现的目标。你可以扩展一下你的目标是什么?做'A ...'是“解包A”... –