几个星期休息之后,我正在尝试使用David Vandevoorde和Nicolai M. Josuttis 所着的模板 - 完整指南来扩展和扩展我的模板知识,我现在想要了解的是模板的显式实例化.
我实际上并没有这样的机制问题,但我无法想象我想要或想要使用此功能的情况.如果有人能向我解释,我将不仅仅是感激.
在编写C++代码时,我经常从在头文件中编写完整的"实现"代码开始,然后需要将实现重构为.cpp文件.
这很好,但是我觉得这个过程很费力,但其他方面很简单,所以我想知道是否有任何自动化方法可以做到这一点?
具体来说,我想转换.h到声明中的所有类和函数定义,并在新.cpp文件中声明它们.
我正在使用xcode,但我对任何解决方案持开放态度.
我正在创建一个库,并且 C++20 模块内有一个类模板,我想添加一个实例化,以减少使用我的库的每个项目的编译时间。
这些不同的实现是否等效,或者是否有更好的方法来实现?
1)
//mod.cpp
export module mod;
export template<typename T>
struct mystruct{ T i;};
export template class mystruct<int>;
Run Code Online (Sandbox Code Playgroud)
//mod.cpp
export module mod;
export template<typename T>
struct mystruct{ T i;};
template class mystruct<int>;
Run Code Online (Sandbox Code Playgroud)
//mod.cpp
export module mod;
export template<typename T>
struct mystruct{ T i;};
export extern template class mystruct<int>;
//mod_impl.cpp
module mod;
template class mystruct<int>;
Run Code Online (Sandbox Code Playgroud)
编辑:这个答案只说 2. 有效,但我的观点是 1. 和 3. 是否也等于 2.