史蒂夫 克利里
贝曼 道斯
霍华德 Hinnant语
约翰 马多克
版权所有©2000 Steve Cleary,Beman Dawes,Howard Hinnant&John马多克
的所有内容<促进/压缩空气.马力>
在内部定义命名空间 促进
.
这个班级压缩成对
是非常类似于标准::一对
,但如果其中一个模板参数是空类,那么空基类优化用于压缩对的大小。
模板 <班 T1类, 班 T2段>
班 压缩空气
{
公众的:
类型定义 T1类 第一种类型;
类型定义 T2段 秒_类型;
类型定义 类别名 调用图(_T)<第一种类型>::参数类型 第一个参数类型;
类型定义 类别名 调用图(_T)<秒_类型>::参数类型 第二参数类型;
类型定义 类别名 调用图(_T)<第一种类型>::参考 第一个引用;
类型定义 类别名 调用图(_T)<秒_类型>::参考 second_引用;
类型定义 类别名 呼叫线路<第一种类型>::常量引用(_R) 第一个实例引用;
类型定义 类别名 呼叫线路<秒_类型>::常量引用(_R) 秒_常量_引用;
压缩空气() : 基础() {}
压缩空气(第一张图类型 x个, 第二参数类型 年);
明确的 压缩空气(第一个参数类型 x个);
明确的 压缩空气(第二参数类型 年);
压缩空气& 操作人员=(常数 压缩空气&);
第一个引用 第一();
第一个实例引用 第一() 常数;
second_引用 第二();
秒_常量_引用 第二() 常数;
无效 互换(压缩空气& 年);
};
可以使用成员函数访问该对的两个成员第一()
和第二()
.请注意,并非所有成员函数都可以为所有模板参数实例化类型。特别地压缩空气
可以为引用和数组类型实例化,但在这些情况下可以使用的构造函数的范围有限。If类型T1类
和T2段
类型相同,则只有一个版本的单参数构造函数,此构造函数将对中的两个值初始化为传递的值。
请注意,如果其中一个成员是POD类型,则该成员不是零初始化的由压缩空气
违约构造函数:如果您希望它们具有默认值。
请注意压缩空气
可以如果任一模板参数是并集类型,则不实例化,除非编译器支持促进::是联盟(_U)
,或者如果促进::is_union(_U)
专门用于联合类型。
最后,对Visual C++6用户要注意的一点是:如果任一参数都是空类型,则分配给该成员将导致内存损坏,除非空类型定义了一个“do nothing”赋值运算符。这个是由于VC6生成隐式赋值运算符的方式中存在错误。
基于Steve Cleary、Beman Dawes、Howard Hinnant和John的贡献马多克。
维护人员约翰·马多克.