我試圖避免外部函數或遞歸調用,所以我決定測試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」... –