c++ 传递/转换一个std::function,它的参数比目标类型少

pvabu6sv  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(199)

有时候,你需要将一个给定类型的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; };

7qhs6swi

7qhs6swi1#

我发现了类似的问题,然后我找到了以下使用std::bind的解决方案:

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

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

字符串
我不确定它是否提供相同的性能,但我看不出有任何理由它应该更慢。

相关问题