2017-03-15 37 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

由於違反了一個定義規則,並非所有C++代碼都可以寫入標頭。

例如,一個類的static成員的存儲保留需要恰好在一個翻譯單元中(儘管未來的C++標準可能會避免)。

最初的目的是讓Boost成爲唯一的標題,但他們不得不迅速放棄這個願望。

+1

是的,我知道,尋找Boost.ProgramOptions的具體案例。 –

+3

因爲它包含這樣的構造,innit! – Bathsheba

+3

C++當時17個內聯變量當然不受歡迎,但它們可以用靜態類模板成員來模擬。 – Quentin

-1

程序選項聲稱自己很小,但事實證明,它是我們在Regex之後構建的第二大圖書館。 (它大於boost文件系統和線程庫。)我相信你應該很高興他們正在爲它建立一個庫,而不是用大量的頭文件來扼殺你的項目。也許作者認爲,當他開始並忘記改變評論的時候,它會變得很小,並且在評論不斷增加和添加功能的時候。

相關問題