我有一个模板,它采用具有不同值的结构,例如:
struct Something { char str[10]; int value; ... ... };
在函数内部我使用sizeof运算符:跳入内存sizeof(Something);
有时我想不跳任何东西;我希望sizeof返回零.如果我输入一个空结构,它将返回1;我可以在模板中放置什么来使sizeof返回零?
解决方法
sizeof永远不会为零. (原因:sizeof(T)是T []类型数组中元素之间的距离,并且元素必须具有唯一地址).
也许您可以使用模板来进行sizeof替换,通常使用sizeof但是专门针对一种特定类型赋予零.
例如
template <typename T> struct jumpoffset_helper { enum { value = sizeof (T) }; }; template <> struct jumpoffset_helper<Empty> { enum { value = 0 }; }; #define jumpoffset(T) (jumpoffset_helper<T>::value)
原文地址:https://www.jb51.cc/c/117270.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。