2012-03-19 2 views
0

Давать это:импульса, matrix_proxy, Const матрица

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); 
} 

Пространства необходимы, если вы компилируете для < 11 C++ в противном случае некоторые компиляторы багги будет интерпретировать его как правый бит-сдвиг (>>) Оператор

1

Попробуйте использовать BOOST_AUTO.

Код:

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

Это очевидно, спасибо! Я понял это сразу после того, как спросил. Решение: matrix_row > lolwut ((матрица ) lol, 5); –