【发布时间】:2017-03-15 13:49:38
【问题描述】:
一些 boost 库是只有头文件的,有些不是,以及出于各种原因等等。
Boost.ProgramOptions 不是仅标头有具体原因/设计决定吗?
我想知道,因为它在其文档中声称是一个“小型”库,我没有看到任何与系统相关的原因(如线程或 asio)。
【问题讨论】:
-
也许我的回答是在光顾你。投赞成票,以便专家回答。
-
我不知道它是否需要这样做,但看起来几乎所有代码都在
.cpp文件中,甚至没有尝试仅作为标题:@987654321 @ -
您可能想给 Vladimir Prus (vladimirprus.com) 发一封电子邮件,看看他是否有答案。
-
我向 Boost.Serialization 的开发人员提出了同样的问题,实际上没有充分的理由这样做。当时,人们担心代码膨胀和编译时间过长。毫无疑问,任何非模板代码都会在 cpp 文件中。现在这些问题不那么严重了。一旦他们决定进行单独编译,他们就滥用了它,现在仅仅因为单例和静态变量之类的事情,就很难让它成为标题。虽然有时只能通过将 cpp 代码(从源代码)复制到 hpp 来使其成为标题。想试试吗?
-
这里是仅用于处理程序选项的标头库,它声称具有与 Boost.ProgramOptions 类似的功能:github.com/rambler-digital-solutions/raconfig。所以没有根本原因不只是标题。还有 CLI11,只有标头,github.com/CLIUtils/CLI11/tree/v0.1
标签: c++ boost boost-program-options header-only