boost, matrix_proxy, const matrix - PullRequest
0 голосов
/ 19 марта 2012

Предоставление:

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 ]

2 голосов
/ 23 августа 2012

Вот как это сделать, используя BOOST_AUTO:

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

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

1 голос
/ 19 марта 2012

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

Код:

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