模板化函数作为另一个模板化函数的参数

时间:2017-12-01 16:18:09

标签: c++ c++11

我有一个实用程序函数,它接受两个值,如果两个值满足某个条件,则在另一个对象上执行某些操作。

因此,效用函数必须将成员函数作为std:函数,有时也作为自由流动函数。

class A
{
    public:
    void fun(int a) {}
};

template <typename T>
bool ifSet(T a, T b, std::function<void(T)> f )
{
    if (a == b) return false;
    else return f(b);
}

int main() {
    auto p = std::make_shared<A>(new A);
    std::cout<< ifSet(10, 10, std::bind(A::fun, p, std::placeholders::_1));

上面的代码是我的虚拟实现,但不起作用。有人可以建议我更好的代码吗?

1 个答案:

答案 0 :(得分:2)

你的

std::function<void(T)> f

返回 void ,并将其用作 bool ifSet()函数

的返回值