1>.\test_ublas.hpp(51): error: no instance of function template "boost::numeric::bindings::lapack::solve" matches the argument list
1> argument types are: (boost::numeric::ublas::matrix<double, boost::numeric::ublas::column_major, boost::numeric::ublas::unbounded_array<double, std::allocator<QuantLib::Real>>>, boost::numeric::ublas::matrix<double, boost::numeric::ublas::column_major, boost::numeric::ublas::unbounded_array<double, std::allocator<QuantLib::Real>>>)
Now, if I put in the default optional parameter I get something that makes it clear that it is instantiating the function, but it isn't binding properly to the code driver.
i.e. use:
1>C:\working\libraries\boost\boost/numeric/bindings/lapack/solve.hpp(50): error: no instance of function template "boost::numeric::bindings::lapack::gesv_impl<ValueType>::compute [with ValueType=double]" matches the argument list
1> argument types are: (boost::numeric::ublas::matrix<double, boost::numeric::ublas::column_major, boost::numeric::ublas::unbounded_array<double, std::allocator<QuantLib::Real>>>, boost::numeric::ublas::matrix<double, boost::numeric::ublas::column_major, boost::numeric::ublas::unbounded_array<double, std::allocator<QuantLib::Real>>>, int, boost::numeric::bindings::lapack::optimal_workspace)
1> driver_routine::compute( a, b, info, work );
1> ^
1> detected during instantiation of "integer_t={int} boost::numeric::bindings::lapack::solve(MatrixA &, MatrixB &, Workspace) [with MatrixA=boost::numeric::ublas::matrix<double, boost::numeric::ublas::column_major, boost::numeric::ublas::unbounded_array<double, std::allocator<QuantLib::Real={double}>>>, MatrixB=boost::numeric::ublas::matrix<double, boost::numeric::ublas::column_major, boost::numeric::ublas::unbounded_array<double, std::allocator<QuantLib::Real={double}>>>,
1> Workspace=boost::numeric::bindings::lapack::optimal_workspace]" at line 51 of ".\test_ublas.hpp"
It appears to me doing a quick read of the sourcecode that the solve function is calling the driver::compute(a,b, info, workspace);
where the gesv_impl is expecting: driver::compute(a, pivotvector, b, info);
I am not sure how the "workspace" is related to the pivot vectors in this case, but calling ::compute(a, workspace, b, info) didn't help.
Thanks,
Jesse