使用一个已知的输入参数和一个未知的输入参数从函数构造std :: function

时间:2017-03-03 16:27:25

标签: c++ function c++11

我有功能

@property (atomic, assign) NSInteger count;

// setter
@synchronized(self) {
    _count = count;
}

我想知道int testFunctionA(double a,std::string b) { return 0; } 已知std::function<int(std::string)>a未知。像

这样的东西
b

但是这种语法不起作用。

正确的语法是什么?

2 个答案:

答案 0 :(得分:4)

您可以使用lambda:

auto func = [](std::string b){ return testFunction( 2.3, b ); };

注意:func将有一些编译器生成的类型,但它可以隐式转换为std::function< int( std::string ) >

答案 1 :(得分:2)

您可以使用std::bind

std::function<int(std::string)> testFunc = 
         std::bind(&testFunction, 2.3, std::placeholders::_1);

或lambda(最好):

std::function<int(std::string)> testFunc = 
        [](std::string str){ return testFunction( 2.3, str ); };