C++模版库的问题。
就想问下,有没有人可以确定。
想使用C++模版的话,就必须有模版源码。
就是说,C++模版库,必须开源,否则无法使用?
[解决办法]
我理解是这样。
[解决办法]
你是在说有template的代码必须放在.h/.hpp文件里
这个,基本是对的,但不完全对。
1. 如果所有的类型变量都被特化
比如说关于
template<typename T1, typename T2>
bool compare(T1 d1, T2 d2);
的特化
template<> bool compare(int d1, double d2);
这个完全特化就可以放在cpp文件里。
2. 如果使用模板的类是你的内部类,不被用户直接使用,则不需要将这个类的.h/.hpp文件暴露出来,自然也不用开源
也就是说,所有需要暴露给用户的代码里面如果有没有完全特化的模板类和函数,确实是需要放在.h/.hpp文件里提供给用户的。
[解决办法]
是的,声明是必须有的,c++ 又不支持分离编译,那么定义也只能一起提供,就等于开源了。
不过开源只要求模板库的提供方,对于使用方,闭源也可以。
[解决办法]
是这样的,,
[解决办法]