传递/转换 std::function 所采用的参数少于目标类型

问题描述 投票:0回答:1

有时,您需要将给定类型的 std::function 转换为带有更多参数的 std::function (但返回类型和第一个参数相同)

例如:

std::function<double(double)> A;
std::function<double()> B = [](){ return 3.14159; };

A = B; //Doesn't compile
A = [B](double){ return B(); }; //Compiles

是否有更有效的方法来做到这一点,并且不需要比下面更多的内存和调用?

A = [](double){ return 3.14159; };
c++ function lambda functional-programming
1个回答
0
投票

我发现了类似的问题,然后我使用

std::bind
找到了以下解决方案:

std::function<double(double)> A;
std::function<double()> B = [](){ return 3.14159; };

A = B; //Doesn't compile
A = std::bind(B); //Compiles

我不确定它是否提供相同的性能,但我不明白为什么它应该更慢。

© www.soinside.com 2019 - 2024. All rights reserved.