我正在开发一个开源库,并且将有一个仅 header 的库作为其依赖项。这种依赖关系将仅在单个cpp文件中使用,因此不会通过我们库的 header 公开。
考虑以下应用程序设置:
OurLib/
- includes <headerOnlyLib.h>, but does not expose this via headers (cpp only)
Application/
- links to OurLib (either statically or dynamically)
- includes <headerOnlyLib.h>
此设置可能会发生什么问题?如果应用程序和库使用不同版本的仅 header 库,该怎么办?会有冲突吗?会有明显的代码重复吗?
最后:如果headerOnlyLib是动态链接库或静态链接库,在这种情况下是否会有优势?
最佳答案
标出的内容实际上会使该模型对于所应用的ODR规则不安全。