Я использую odeint из библиотеки boost и как новичок в C++ не понимаю, в чем проблема. Учитывая следующий исходный код в файле с именем ODESystem.hpp
#include "blaze/Math.h"
class ODESystem {
public:
using Complex = std::complex< Float >;
using StateVector = blaze::DynamicVector< Complex,
blaze::columnVector >;
void operator()(const StateVector &x, StateVector &dxdt, const double t);
};
void ODESystem::operator()(const ODESystem::StateVector &x, ODESystem::StateVector &dxdt, const double t) {
// don't do anything here.
}
а так же простой вызов в main.cpp на odeint через
#include <boost/numeric/odeint.hpp>
int main(int argc, char** argv) {
ODESystem::StateVector h( 3UL, 7.0F );
// ODESystem sys is properly initialized beforehand
boost::numeric::odeint::integrate(sys, h,0.,10.,.1);
}
Я не понимаю, почему компилятор говорит мне
/usr/local/include/boost/numeric/odeint/integrate/integrate.hpp(53): примечание: этот кандидат был отклонен, поскольку не удалось вывести по крайней мере один аргумент шаблона. end_time , Time dt , Наблюдатель-наблюдатель )
Из того, что я читал здесь в подобных сообщениях, это должно быть связано с невыводимым контекстом, но я просто недостаточно знаю, чтобы увидеть, где это применимо здесь.