模板的可维护性是一个问题。这是一个简单的事实,当您在致力于泛型库的社区之外工作时。我不希望我的朋友和同事不得不使用Clang来运行我的代码,原因很简单……好吧..。那么它并不是真正的通用和可移植的,不是吗?但我确实非常希望能够时不时地写一些模板化的代码。
您使用了哪些技巧来使模板化代码更易用、更易维护、更具可读性?像描述性模板参数,enable-if,以及类似的代码风格的小怪癖,一直到关于编译器支持可变模板或避免什么模板(反)模式的建议。
简而言之,我应该避免哪些习惯用法?我应该依靠哪一个?
我希望我的代码是优雅的,但不是太优雅。
我找到了一些资源:
C++ FAQ
Error Decrypt
What are variadic templates?
发布于 2010-12-22 04:15:07
我使用以下方法:
detail_命名空间中隔离了大量的类帮助器;只公开必要的内容。iterator_transformer<Iter, F>是由一个好的命名方案(名词表示类,动词表示方法,形容词表示枚举)构造的。采用后缀约定(_traits,_concept,...)(1)type是返回类型的元函数的“返回类型”,value是返回静态常量整数的函数的静态常量返回类型,other是返回模板的元函数的返回类型。如果你滥用元编程,你可能想使用boost Roberts)enable_if,它会使代码更难读。你可以在内部使用它。enable_if。将复杂类的实现保持为更简单的simple.(1)我使用_concept作为CRTP模式的基类(即,“静态多态性”)。CRTP很好,因为它允许您用最少的代码来改进默认实现。
发布于 2010-12-22 04:27:34
我同意这里的大多数答案,这些答案表明模板是一个(越来越多?)这是该语言的重要组成部分,如果不能阅读一些合理的模板代码,任何人都不能假装是一名C++开发人员。
然而,模板可能会变得杂乱无章,所以我倾向于遵循一些指导原则:
details命名空间中显示严格的最小值和隐藏细节,或者更好的是,在一个单独的头文件中上的要求
发布于 2010-12-22 04:00:45
我不太明白。模板的问题是由于很难获得正确的包含顺序和声明/定义顺序,而不是可移植性。
模板化代码的可移植性不亚于常规代码。
https://stackoverflow.com/questions/4503334
复制相似问题