C++核心准则T.62:将非依赖类模板成员放入非模板基类中

面向对象思考

共 1526字,需浏览 4分钟

 ·

2020-09-16 18:29

T.62: Place non-dependent class template members in a non-templated base class

T.62:将非依赖类模板成员放入非模板基类中


Reason(原因)

Allow the base class members to be used without specifying template arguments and without template instantiation.

允许在不定义模板参数和不例示模板的情况下使用基类成员。


Example(示例)

template
class Foo {
public:
enum { v1, v2 };
// ...
};

???

struct Foo_base {
enum { v1, v2 };
// ...
};

template
class Foo : public Foo_base {
public:
// ...
};
Note(注意)

A more general version of this rule would be "If a class template member depends on only N template parameters out of M, place it in a base class with only N parameters." For N == 1, we have a choice of a base class of a class in the surrounding scope as in T.61.

??? What about constants? class statics?

本规则的更普遍版是:如果模板类成员只依赖于M以外的N个模板参数,将其放入只包含N个参数的基类中。对于N==1的情况,我们可以选择外围作用域的某个类的基类,就像T.61那样。

???常量该如何处理?静态成员呢?


Enforcement(实施建议)

  • Flag ???

  • 标记 ???

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#t62-place-non-dependent-class-template-members-in-a-non-templated-base-class


新书介绍

《实战Python设计模式》是作者最近出版的新书,拜托多多关注!

本书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。




觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!



浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报