Nob*_*ody 1 c++ templates class member
给定一个这样的模板类:
template <typename T>
class C
{
T member;
//... some other members that are not of interest here
};
Run Code Online (Sandbox Code Playgroud)
有什么类型我可以作为T来防止member占用不必要的内存?起初void出现在我的脑海中,但我知道你不能声明变量void.
注意
当然这个例子是简化的.后台是一个包含一些信息的类,但可以获取用户添加的其他信息.当用户不想添加其他信息时,应该可以将其删除.因此,基本上如果用户想要存储他将构建的其他数据,C<MyAdditionalData>但如果他不存在它应该是,C<NoData>并且将没有数据.当然我可以写一些模板专业化,但我不喜欢写两次.
编辑
好的我发现一个空类是我能得到的最接近的(因为对齐而仍然消耗1个字节甚至4/8)到目前为止,所以我现在的问题是:我是否应该使用一些标准的空类这使我的代码更具可读性?
专门为类型设置模板类NoData,不要在此专门化中定义成员.
template <class T>
class C {
T member;
...
};
template<>
class C<NoData> {
// Do not declare that member
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
197 次 |
| 最近记录: |