C ++模板半专业化

时间:2017-04-06 22:22:50

标签: c++ c++11 templates

玩具示例以更好地解释我的问题:

我有我的库,它有我的自定义结构,例如StructProgrammer和我的templateProgrammer.hpp文件:

template <typename T> TemplateProgrammer {
};

我知道90%的时间,人们会将模板类用作:

TemplateProgrammer<StructProgrammer>

但是,我们希望人们也可以将我的模板与自己的自定义结构一起使用,例如

TemplateProgrammer<StructUser>

由于它是一个模板,这不是问题。但是用户需要花费大量时间来编译整个程序,因为每次他更改自己的TemplateProgrammer时都必须编译这个重main.cpp类。因此,一个可能的解决方案是创建templateProgrammer.cpp,并在那里实现代码并初始化类:

template class TemplateProgrammer<StructUser>;

然而,这会使用户无法为自己的StructUser编译此函数:

TemplateProgrammer<StructUser>

所以我想要的是为我的TemplateProgrammer<StructProgrammer>添加* .cpp代码,例如对于大多数用户来说,编译速度很快,同时保持专业用户使用自己的结构的可能性(对于自定义结构,我不在乎编译是否需要时间,因为这是不可避免的。)

重点是,这可能吗?我的库的模板是否可以针对特定类进行预编译,同时可以保留为新类编译的可能性吗?如果是这样,怎么样?

否则,最好的方法是什么?

0 个答案:

没有答案