質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Boost

Boost (ブースト)は、C++の先駆的な開発者のコミュニティ、 またそのコミュニティによって公開されているオープンソースライブラリのことを指します。

Q&A

解決済

1回答

4128閲覧

Boost の Warning

BeatStar

総合スコア4958

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Boost

Boost (ブースト)は、C++の先駆的な開発者のコミュニティ、 またそのコミュニティによって公開されているオープンソースライブラリのことを指します。

0グッド

0クリップ

投稿2017/01/10 02:50

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<typename> 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> class std::auto_ptr' is deprecated [-Wdeprecated
-declarations]
explicit shared_ptr( std::auto_ptr<Y> & 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 )

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

この警告頭痛いですよね。gcc側の大きなお世話なのか、boost側の手抜きなのかよくわからないのですが、以前から報告されているけど、今も出るようです。

私はboostのヘッダをインクルードする直前で下記設定しています。

'#pragma GCC diagnostic ignored "-Wdeprecated-declarations"`


【追記】
C++標準規格で、auto_ptrは非推奨で将来なくなると定められているようです。
何故にboostが警告を出ないようにしないのかよく分かりませんが、何か理由があるのかも。

投稿2017/01/10 03:37

編集2017/01/10 03:57
Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問