在编写模板时,由于模板中的标头位于标头中,导致我的实现细节无法接触到用户,我遇到了一个问题。
在典型的.cpp
文件中,可以通过使用内联命名空间或static
关键字使用内部链接来完全隐藏实现细节。但是,由于标头不是独立的翻译单元,因此在标头中并没有多大作用。
我已经决定拥有一个实现名称空间,并且只是假设用户不会喜欢它。但是,我宁愿根本不给用户选择的选项。这可能吗?
我目前正在做什么:
//template_stuff.hpp
namespace impl {
// stuff used in code below
}
namespace project {
// templates that use entities in ::impl
}
我对未来的问题是模块是否可以为我解决此问题。我希望如此,但是我不了解有关最终设计的足够细节来得出结论。