为什么 Boost.ProgramOptions 不是 header-only?
Why is Boost.ProgramOptions not header-only?
有些 boost 库是 header-only,有些不是,出于各种原因等
是否有具体的 reason/design 决定为什么 Boost.ProgramOptions
不是 header-only?
我想知道,因为它在其文档中声称是一个 "small" 库,但我没有看到任何 system-related 原因(例如线程或 asio)。
由于 one-definition-rule 违规,并非所有 C++ 代码都可以在 header 秒内编写。
例如,class 的 static
成员的存储预留需要正好在一个翻译单元中(尽管未来的 C++ 标准可能会避免这一点)。
Boost 的初衷只是 header,但他们很快就放弃了这个愿望。
Program Options 号称很小,但事实证明它是我们构建的第二大库,仅次于 Regex。 (它比 boost Filesystem 和 Thread 库更大。)我相信您应该为他们正在为它构建一个库而不是用大量包含 headers 窒息您的项目而感到高兴。可能作者开始的时候觉得它会很小,等到它继续增长和增加功能的时候忘记改评论了。
有些 boost 库是 header-only,有些不是,出于各种原因等
是否有具体的 reason/design 决定为什么 Boost.ProgramOptions
不是 header-only?
我想知道,因为它在其文档中声称是一个 "small" 库,但我没有看到任何 system-related 原因(例如线程或 asio)。
由于 one-definition-rule 违规,并非所有 C++ 代码都可以在 header 秒内编写。
例如,class 的 static
成员的存储预留需要正好在一个翻译单元中(尽管未来的 C++ 标准可能会避免这一点)。
Boost 的初衷只是 header,但他们很快就放弃了这个愿望。
Program Options 号称很小,但事实证明它是我们构建的第二大库,仅次于 Regex。 (它比 boost Filesystem 和 Thread 库更大。)我相信您应该为他们正在为它构建一个库而不是用大量包含 headers 窒息您的项目而感到高兴。可能作者开始的时候觉得它会很小,等到它继续增长和增加功能的时候忘记改评论了。