是否有可能声明一个不占用内存的成员变量?

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)到目前为止,所以我现在的问题是:我是否应该使用一些标准的空类这使我的代码更具可读性?

eno*_*ram 5

专门为类型设置模板类NoData,不要在此专门化中定义成员.

template <class T>
class C {
   T member;
...
};

template<>
class C<NoData> {
   // Do not declare that member
};
Run Code Online (Sandbox Code Playgroud)