C++模版库的问题。

Enter空格 2013-01-09 10:03:23
就想问下,有没有人可以确定。
想使用C++模版的话,就必须有模版源码。
就是说,C++模版库,必须开源,否则无法使用?
...全文
143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimette 2013-01-09
  • 打赏
  • 举报
回复
不是很理解!
Enter空格 2013-01-09
  • 打赏
  • 举报
回复
我去。。一下子这么多回复。 谢谢大家了。 就是突然想到模版的的特性 只有实例化后,编译器才能为实例产生代码, 所以突然想到这点,想上来证实一下。
lee_鹿游原 2013-01-09
  • 打赏
  • 举报
回复
看看boost
ri_aje 2013-01-09
  • 打赏
  • 举报
回复
引用 2 楼 benjaminweber 的回复:
你是在说有template的代码必须放在.h/.hpp文件里 这个,基本是对的,但不完全对。 1. 如果所有的类型变量都被特化 比如说关于 template<typename T1, typename T2> bool compare(T1 d1, T2 d2); 的特化 template<> bool compare(int d1, double d2);……
编译器必须看的见特化,特化才能够有效,这导致必须将 cpp 文件也发布,搞来搞去还是开源。
  • 打赏
  • 举报
回复
是这样的,,
ri_aje 2013-01-09
  • 打赏
  • 举报
回复
是的,声明是必须有的,c++ 又不支持分离编译,那么定义也只能一起提供,就等于开源了。 不过开源只要求模板库的提供方,对于使用方,闭源也可以。
benjaminweber 2013-01-09
  • 打赏
  • 举报
回复
你是在说有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文件里提供给用户的。
SNAKE-SNAKE 2013-01-09
  • 打赏
  • 举报
回复
我理解是这样。

64,688

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧