一些 boost 库仅是标头,有些则不是,以及出于各种原因等。
是否有特定的原因/设计决定为什么Boost.ProgramOptions
不是仅标题?
我想知道,因为它在其文档中声称是一个“小型”库,我没有看到任何与系统相关的原因(如线程或 asio)。
一些 boost 库仅是标头,有些则不是,以及出于各种原因等。
是否有特定的原因/设计决定为什么Boost.ProgramOptions
不是仅标题?
我想知道,因为它在其文档中声称是一个“小型”库,我没有看到任何与系统相关的原因(如线程或 asio)。
Program Options 声称很小,但事实证明它是我们正在构建的第二大库,仅次于 Regex。(它比 boost Filesystem 和 Thread 库更大。)我相信你应该很高兴他们正在为它构建一个库,而不是用大量包含的头文件阻塞你的项目。可能作者刚开始的时候觉得会小,在继续成长和增加功能的时候忘记改评论了。
由于违反单一定义规则,并非所有 C++ 代码都可以只写在头文件中。
例如,static
类成员的存储保留需要恰好在一个翻译单元中(尽管未来的 C++ 标准可能会避免这一点)。
最初的意图是让Boost只成为头球,但他们不得不迅速放弃这种愿望。