boost,matrix_proxy,const矩阵

时间:2012-03-19 11:14:54

标签: c++ boost boost-ublas

给予:

void foo(const matrix<double>& lol)
{
    matrix_row<matrix<double> > lolwut(lol, 5);
}

错误:

no matching function for call to ‘boost::numeric::ublas::matrix_row<boost::numeric::ublas::matrix<double> >::matrix_row(const boost::numeric::ublas::matrix<double>&, size_t&)’

如何unconst函数参数中给出的引用或使用哪种变通方法?我不确定是否简单的任务

matrix<double> tmp = lol;

不会有任何开销。

2 个答案:

答案 0 :(得分:2)

以下是使用BOOST_AUTO

执行此操作的方法
void foo(const matrix<double>& lol)
{
    matrix_row< const matrix<double> > lolwut(lol, 5);
}

如果要编译为C ++,则需要空格。 11否则一些错误编译器会将其解释为正确的位移(>>)运算符

答案 1 :(得分:1)

尝试使用BOOST_AUTO

<强>代码:

BOOST_AUTO(r, row(lol, 5));