2012-03-19 6 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を使用して行う方法です:あなたがC++ < 11にコンパイルする場合スペースが必要とされている

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

そうでない場合は、いくつかのバグのコンパイラはそれを解釈します右ビットシフト(>>)演算子

1

BOOST_AUTOを試してみてください。

コード:ここで

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

これは明らかです、ありがとう!私は質問した直後にそれを理解した。解決策は、matrix_row > lolwut((行列)lol、5)です。 –

関連する問題