私は可変引数を持つgeneric lambdaを返す関数を書こうとしています。ラムダは引数の1つが特定の値と等しいことをチェックします。ここで私は何をしようとしている(おおよそ)です:汎用ラムダのvariadicパラメータパックから型を取得するには?
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