有时,您需要将给定类型的 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; };
我发现了类似的问题,然后我使用
std::bind
找到了以下解决方案:
std::function<double(double)> A;
std::function<double()> B = [](){ return 3.14159; };
A = B; //Doesn't compile
A = std::bind(B); //Compiles
我不确定它是否提供相同的性能,但我不明白为什么它应该更慢。