gpt4 book ai didi

c++ - 根据参数个数在模板中调用函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:28:23 26 4
gpt4 key购买 nike

我有一个模板,它根据我作为参数传递的函数计算一些值。但是,并非我传递给模板的每个函数都需要模板中计算的所有参数。

template<typename T>
int func(T function)
{
int a = 0; // some value computed in func
int b = 10; // another value computed in func
return function(a, b);
}

int main()
{
int res = func([](int a, int b)
{
// do somthing
return 0;
}
);

return 0;
}

我想写这样的东西

int res2 = func([](int a) // needs only parameter a
{
// do somthing
return 0;
}
);

如果函数只需要模板传递的参数之一。我如何推断传递给模板的函数实现此目的所需的参数数量?

最佳答案

您可能会使用 SFINAE:

template <typename F>
auto func(F f) -> decltype(f(42, 42))
{
int a = 0;
int b = 10;
return f(a, b);
}

template <typename F>
auto func(F f) -> decltype(f(42))
{
int a = 51;
return f(51);
}

然后使用它

int res = func([](int a, int b) { return a + b; } );
int res2 = func([](int a) { return a * a; } );

关于c++ - 根据参数个数在模板中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52369598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com