boost, matrix_proxy, const matrix

Давать это:

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, иначе некоторые глючные компиляторы интерпретируют его как правильный сдвиг битов (>>) оператор

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

Код:

BOOST_AUTO(r, row(lol, 5));
Другие вопросы по тегам