我们的大部分商业 C++ 库都依赖于模板。我们计划将我们的产品作为头文件和动态链接库(封闭源代码)出售,但由于我们的大部分代码库都集中在头文件中,我们实际上会将其作为开源版本发布,并且缺少易于替换的小块。
这是我们的库接口中的一个类的示例:
template<class ItInput, class ItOutput>
struct serialize{
ItOutput operator() (ItInput first, ItInput last, ItOutput d_first) {
// operation on pointers (assuming that ++, -- and * operators work as expected for pointers)
}
有没有办法为我们的模板代码提供等于或优于编译常规代码的混淆级别(即技术上可逆但不有利可图,也不是最佳的这样做)?
编辑:澄清一下,我们的目标是防止用户阅读实施,而不是防止非法复制我们的工作。为了这个问题,请假设我们有这个要求的正当理由。