我想寫一個函數,將返回一個generic lambda與可變參數,其中lambda檢查其中一個參數是否等於一個特定的值。這裏是(大約)我想要做的事:如何從泛型lambda的可變參數包中獲取類型?
template <int Index, typename TValue>
inline auto arg_eq(const TValue& value)
{
return [value] (auto... args) -> bool {
return (std::get<Index>(std::tuple</* ??? */>(args...)) == value);
};
}
我不知道要放什麼東西在std::tuple</* ??? */>
模板參數。我試過decltype(args)
,decltype(args...)
,auto
,auto...
,和其他一些事情,但我不斷收到編譯器錯誤。這甚至有可能嗎?
非仿製藥會是這樣的:
template <int Index, typename TValue, typename... TArgs>
inline auto arg_eq(const TValue& value)
{
return [value] (TArgs... args) -> bool {
return (std::get<Index>(std::tuple<TArgs...>(args...)) == value);
};
}
這工作正常,但返回的拉姆達不是通用的 - 它不與任意參數包工作。
或'的std :: tie'。 .. – Jarod42