【发布时间】:2020-04-29 19:33:40
【问题描述】:
我有一个模板函数:
template <class F>
Real solveImpl(const F& f,
Real xAccuracy)
我需要传递一个函子 f,它接受一个参数 x 并返回一个双精度值,基本上是一个 std::function<Real(Real)>。我有以下成员函数:
Real UnderlyingDefaultTimeSimulation::cumulativeHazardFunction(int
scenarioIdx, Real t1, Real t2, Real target)
除了t2之外的所有参数都将被压制,所以我继续使用经典
auto f = std::bind(&UnderlyingDefaultTimeSimulation::cumulativeHazardFunction, j, t1, std::placeholders::_1, exponential[i]);
认为新创建的函数 f 将有效地成为一个只接受单个参数 t2 的可调用函数。当我写 solve(f, accuracy) 时,编译器在尝试所有可能的匹配项并显示错误消息后在编译时解析失败:
没有匹配函数调用对象 std::_1::bind(............)
关于如何打开我的成员函数的任何其他方式:
Real UnderlyingDefaultTimeSimulation::cumulativeHazardFunction(int
scenarioIdx, Real t1, Real t2, Real target)
在钳制除t2 之外的所有参数后转换为std::function<Real(Real)>?
谢谢, 一个
【问题讨论】:
标签: c++