ブーストスピリットヘッダーは非推奨になりました
-
06-09-2019 - |
質問
boost::spirit のクイックスタート ガイドに従っているのですが、以下をインクルードするとこのコンパイラ警告が表示されます。「このヘッダーは非推奨です。使ってください:boost/spirit/include/classic_core.hpp" これについて心配する必要がありますか?
(クイックスタートガイド: http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/doc/quick_start.html 、ここでコンパイルしようとしているプログラムの完全なソース: http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/example/fundamental/number_list.cpp)
編集:さらに、推奨される classic_core.hpp および classic_push_back_actor.hpp ヘッダーを使用してコンパイルしようとすると、次のコンパイラ エラーが発生します。
test7.cpp: In function 'bool parse_numbers(const char*, __gnu_debug_def::vector<double, std::allocator<double> >&)':
test7.cpp:18: error: 'real_p' was not declared in this scope
test7.cpp:18: error: 'push_back_a' was not declared in this scope
test7.cpp:23: error: 'space_p' was not declared in this scope
test7.cpp:23: error: 'parse' was not declared in this scope
解決
[編集:]元の答えはかなり時代遅れです。特にリンクが壊れています。Boost の現在のバージョン (2012 年 2 月 24 日以降) は 1.49.0 です。
言及された警告は、次の結果です。 #include <boost/spirit.hpp>
これは非推奨のヘッダーです。ただし、Web 上の古い例ではこの形式が使用されています。まず始めに、次のことを試してください。 ブーストチュートリアル. 。正しいインクルードと名前空間が表示されれば、ほとんどの古い例は簡単に変換できます。
[古い答え:]
boost 1.39 以降 (SVN 経由) を使用する必要があります。このプレゼンテーションは次の点に役立ちます。
つまり、まったく新しい方法があり、使用する名前空間は次のとおりです。
boost::spirit:qi
(パーサー用)boost::spirit::karma
(ジェネレーターライブラリ用)
公式リリースは 1.40 なので、おそらくその時までにドキュメントが更新されるでしょう。
編集: Boost SVN リポジトリ内のドキュメント は現在開発中であり、おそらく新しいアーキテクチャをより忠実に反映していると思われます。
他のヒント
あなたはパーサはブースト::精神::古典的な名前空間にある古典的なヘッダを含めているとき。試してみてください。
を使用して名前空間boost ::精神::古典;
ライブラリがクラス/ヘッダー/メソッドなどを示している場合。が非推奨であるということは、ライブラリの保守者が機能の保守を停止する可能性が高く、将来的には削除される可能性があることを意味します。今後の頭痛の種を避けるために、遅かれ早かれ推奨されるヘッダーに切り替えることをお勧めします。
新しいヘッダーでは機能の処理方法が若干異なる場合があるため、コードの変更が必要になる場合があります。
(ブーストについてはあまり詳しくありません。これは単なる一般的なコメントです)