2012-03-19 181 views
0

给予这样的:提振,matrix_proxy,常量矩阵

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

这里是你如何做到这一点使用BOOST_AUTO

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

,如果编译到C++ < 11所需要的空间,否则一些有缺陷的编译器将它解释作为一个右位移(>>)运算符

1

尝试使用BOOST_AUTO

代码:

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

很明显,谢谢!在我质疑之后,我发现了它。解决方案是matrix_row > lolwut((矩阵),lol,5); – 2012-03-19 13:05:31