将整个C++ STL代码包含在.h而不是.cpp/.c文件中的原因是什么?

Jud*_*deo 4 c++ templates stl class

我刚刚下载了STL源代码,我注意到STL模板类的所有定义都包含在.h文件中.函数定义的实际源代码位于.h文件而不是.cpp/.c文件中.这是什么原因?

http://www.sgi.com/tech/stl/download.html

Ste*_*sop 16

因为很少有编译器实现模板的链接.这个很难(硬.

这是一篇简短而又(我认为)有关它的信息性文章:http://www.informit.com/guides/content.aspx?g = cplusplus&seqNum = 53

我说"我认为",因为它不是我非常熟悉的东西,而是它广泛未实现的东西.我最初说标准不需要它,但是看看C++ 03中"export"的定义,我没有看到任何迹象表明它是可选的.也许这只是一个失败的标准.

  • export是C++ 98标准的一部分,但正如你所说,大多数编译器不支持它(最后我检查过,g ++团队没有兴趣实现它). (2认同)
  • "export"关键字很可能在下一版本的C++标准中被弃用.见http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/ (2认同)
  • 贬低了,嘿.因此,如果它在C++ 0x中被弃用,那么它甚至可能在某种程度上被改变为"C++ ......嗯...也许在Duke Nukem Forever点击商店之后的某个时候".到那时,人们可能已经想出如何实施它;-) (2认同)