2008年2月15日金曜日

boost::ublas のコンテナでコンパイル時警告

boost::numeric::ublas::matrix を宣言・代入し、returnすると

base class ‘class boost::numeric::ublas::storage_array (略)’ should be explicitly initialized in the copy constructor

という警告が出る。インターネットで調べると
boost::numeric::ublas::vectorでの同様の警告に関する話題あり。

matrix なりvectorなりのコピーコンストラクタが基底クラス storage_array の初期化に失敗している様子。というか初期化していない。(エラーメッセージそのままだけど)

vectorの場合 boost/numeric/ublas/storage.hppの92行目と93行目の間に
storage_array < self_type,ALLOC > (),

と挿入すれば警告は消える。無視して次のリリースでの修正を待っても問題なさそう。
と書いてある。

しかし実際変更するとのtemplate引数は1つだというエラーが出るので
storage_array < self_type > (),

が正解と思われる。 boost 1.34 + g++4.1.2

0 件のコメント:

コメントを投稿