2017-03-15 7 views
10

いくつかのブーストライブラリはヘッダのみであり、いくつかはそうではなく、さまざまな理由からです。Boost.ProgramOptionsがヘッダのみでないのはなぜですか?

Boost.ProgramOptionsはヘッダのみではない特定の理由または設計上の理由はありますか?

私はドキュメントの「小さな」ライブラリであると主張しており、システム関連の理由(スレッドやasioなど)は表示されません。

+0

おそらく私の答えはあなたをひいきにしています。 upvoteを持っているので、専門家が答えるかもしれません。 – Bathsheba

+0

これを行う必要があるかどうかわかりませんが、ほとんどのコードが '.cpp'ファイルにあり、ヘッダーのみであることを試みていないようです:https://github.com/ boostorg/program_options –

+0

Vladimir Prus(http://vladimirprus.com/)に彼に答えがあるかどうかを知らせる電子メールを送りたいかもしれません。 – sigbjornlo

答えて

-1

1つの定義ルール違反のために、すべてのC++コードが単なるヘッダーに書き込まれるわけではありません。

たとえば、あるクラスのメンバーstaticの記憶予約は、正確に1つの翻訳単位にする必要があります(将来のC++標準ではそれを回避することができます)。

ブーストがヘッダーのみであることが本来の目的でしたが、すぐにその願望を放棄しなければなりませんでした。

+1

ええ、私は、Boost.ProgramOptionsの特定のケースを探しています。 –

+3

それはそのような構造物を含んでいます。 – Bathsheba

+3

C++ 17のインライン変数はもちろん当時の質問から外れていましたが、静的クラスのテンプレートメンバーでエミュレートできます。 – Quentin

-1

プログラムのオプションは小さいと主張していますが、Regexの後に2番目に大きなライブラリを作成しています。 (これは、ファイルシステムとスレッドライブラリを強化するよりも大きい)私は、あなたが含まれているヘッダーのトンでプロジェクトを窒息させるのではなく、ライブラリを構築していることをうれしく思います。おそらく、作者は、開始時には小さく、コメントの変更や機能の追加を続けて忘れていたと考えました。

関連する問題