通用/模板编程最佳实践:限制类型,或不限制类型

Bre*_*ier 13 c++ templates boost generic-programming c++11

这是我的问题.我只是好奇在限制可以传递给泛型函数或类的类型方面的共识.我以为我曾经读过,如果你正在进行通用编程,通常最好先把东西打开而不是试图关闭它们(不记得来源).

我正在编写一个具有一些内部泛型函数的库,我觉得它们应该只允许库中的类型与它们一起使用,因为这就是我的意思.另一方面,我不确定我将锁定事情的努力值得.

任何人都可能有一些关于这个主题的统计数据或权威评论?我也对合理的意见感兴趣.希望这并不能完全解决这个问题:

此外,SO上是否有任何标签等同于"最佳实践"?我没有特别看到那个,但似乎能够提出给定SO主题的所有最佳实践信息是有帮助的......也许不是,只是一个想法.

编辑:到目前为止,一个答案提到我正在做的库的类型将是重要的.它是一个数据库库,最终使用STL容器,variadics(元组),Boost Fusion,这种性质的东西.我可以看到这是如何相关的,但我也会对确定走哪条路的经验法则感兴趣.

Ale*_*ler 14

始终保持开放 - 但请务必保持开放状态

  • 记录有效类型与通用代码一起使用所需的接口和行为.
  • 使用类型的接口特征(特征)来确定是允许/禁止它.不要根据类型名称做出决定.
  • 如果有人使用错误的类型,则会产生合理的诊 如果C++模板使用错误的类型实例化,那么C++模板非常适合引发大量深度嵌套的错误 - 使用类型特征,静态断言和相关技术,可以轻松生成更简洁的错误消息.

  • @James:使用C++ 0x`static_assert`使它更容易. (2认同)