我刚读了一本名为《实用C++元编程》的书,其中有一个例子我无法编译。你能帮我解决一下吗?
template <typename F>
struct make_tuple_of_params;
template <typename Ret, typename... Args>
struct make_tuple_of_params<Ret (Args...)>
{
using type = std::tuple<Args...>;
};
template <typename F>
using make_tuple_of_params_t = typename make_tuple_of_params<F>::type;
template<typename F>
void some_magic_function(F callable)
{
make_tuple_of_params_t<F> tuple;
/*
... do something with arguments in tuple...
*/
}
int main()
{
some_magic_function([] (int, double, float) {});
}
我收到了一个编译错误,其中显示:“type”不是“make_tuple_of_params”的任何直接或间接基类的成员。看起来 SFINAE 没有按预期工作,因为选择了默认结构体。我该如何解决这个问题?
auto
参数,这显然可以被视为模板化的函数对象。对于这种类型的lambda,您期望的元组类型是什么样子? - W.F.