是否可以公开模板库的模板类?

Atu*_*tul 4 c++ templates metaprogramming

我正在开发一个C++中的矩阵计算库.为此,我想使用模板.在做了一些模板元编程之后,我意识到我最终会在Templatise Matrix类中公开我的实现.当你公开那个特定的模板类时,有没有办法在头文件中模糊模板类的实现?如果是,那怎么办?

Mat*_* M. 5

我将从客户的角度回答.

当我需要使用库并将其集成到我的代码中时,我希望看到源代码.

这不是因为我希望将其从作者中删除......这不是因为我是一个无法无天且无关紧要的黑客......

简而言之,因为:

  • 代码是文档,看到方法的实现将帮助我弥补它的不足,或者更好地理解它的含义(*)
  • 对于调试,降级到库代码的能力是非常宝贵的
  • 对于开发来说,如果我可以自己编译代码,各种风格(有和没有仪器,也就是gcov,有和没有调试符号等等),那就容易多了.

我不要求代码是免费的,我对获得许可的代码完全没问题,而且我会严格遵守许可条款,我只是要求代码可用.

坦率地说,如果我在两个库之间做出选择,并且一个不暴露其代码,我将倾向于另一个,除非性能/正确性差异非常重要.

(*)在C++中,Boost拥有我认为在这方面从根本上被打破的库.代码充满了编译器的解决方法,这使得它很难阅读.不过,我使用它们因为它们真棒.