質問: C/C++ ( BetterC )でやっています。 日付操作が Boost では簡単らしいので Boost を使ってみたいと思っています。 私はMinGW ( g++ ) でやっていて、Boost をコンパイルするだけでも大変でしたが、 疑問というか、質問があります。 Boostコンパイル時から Warning が出ていましたが、一応ライブラリは出来ているようです。 で、これを自分の実行ファイルにリンクします。 すると、 ... C:/(パス)/MinGW/posix/mingw32/lib/gcc/i686-w64-mingw32/6.2.0/in clude/c++/bits/unique_ptr.h:49:28: note: declared here template class auto_ptr; ^~~~~~~~ In file included from C:\(パス)\boost\mingw\include/boost/share d_ptr.hpp:17:0, from C:\(パス)\boost\mingw\include/boost/date_ time/gregorian/greg_month.hpp:14, from C:\(パス)\boost\mingw\include/boost/date_ time/gregorian/greg_ymd.hpp:16, from C:\(パス)\boost\mingw\include/boost/date_ time/gregorian/greg_calendar.hpp:16, from C:\(パス)\boost\mingw\include/boost/date_ time/gregorian/gregorian_types.hpp:19, from C:\(パス)\boost\mingw\include/boost/date_ time/gregorian/gregorian.hpp:20, from main.cpp:9: C:\(パス)\boost\mingw\include/boost/smart_ptr/shared_ptr.hpp:44 1:31: warning: 'template class std::auto_ptr' is deprecated [-Wdeprecated -declarations] explicit shared_ptr( std::auto_ptr & r ): px(r.get()), pn() ^~~~~~~~ ... とWarning が出ています。 ( 行がかなり多いため すべてチェックできない... ) 一応実行ファイルは出来上がっていますが、Warnig が出ているのでどうすればいいか... テストプログラム ( サンプルプログラム ) に組み込んでいるので 今は問題ないですが、 作品に組み込む場合で、他の部分でエラーがあっても Warnig のせいで どこでエラーなのか判断がしづらいです。 このWarning を消す方法 ってないでしょうか? Boost のコンパイル方法は 「www.rodneybeede.com」の「Boost C++ libraries on Windows with MinGW」と 「boostjp」の「Boostライブラリのビルド方法」を参考にして、 1. MinGW ( g++ ) のパスを設定 2. bootstrap.bat に 引数 "gcc" を渡す 3. bootstrapで出来上がった b2 に 引数 ( toolset=gcc link=static variant=release install -j2 --prefix=インストール先 ) を渡す で出来て、 ソースコードを Boostのヘルプファイル ( html ) から 抜き出して試します。 ( コンパイルが通らないことにはどうしようもないので... ) ( main.cpp をコンパイルするとして。 ) $rem スタンドアローンで動くようにする $SET STAND=-static-libgcc -static-libstdc++ -static -lpthread $g++ -o main.exe main.cpp -IC:\(パス)\boost\mingw\include -LC:\(パス)\boost\mingw\lib -lboost_date_time-mgw62-mt-1_58 %STAND% と打ってコンパイル。 すると上記に書いたようなWarningが... このWarningを消す方法が知りたいのです。 ( もしかすると MinGW の設定かな? ) [環境等] 言語 : C/C++ ( Better C ) コンパイラ : MinGW ( g++ ) MinGWのバージョン: (i686-posix-dwarf-rev1, Built by MinGW-W64 project) 6.2.0 Boostのバージョン: 1.58.0 ( boost_1_58_0 ) 宜しくお願い致します。
回答: こんにちは。 この警告頭痛いですよね。gcc側の大きなお世話なのか、boost側の手抜きなのかよくわからないのですが、以前から報告されているけど、今も出るようです。 私はboostのヘッダをインクルードする直前で下記設定しています。 '#pragma GCC diagnostic ignored "-Wdeprecated-declarations"` 【追記】 C++標準規格で、auto_ptrは非推奨で将来なくなると定められているようです。 何故にboostが警告を出ないようにしないのかよく分かりませんが、何か理由があるのかも。