【发布时间】:2018-11-06 08:21:02
【问题描述】:
假设我有一个值:
int i = 0;
还有一个可以进行空基优化的空类:
struct Empty{
// stuff that passes
// static_assert( std::is_empty<Empty>::value );
};
是否合法:
Empty& e = *reinterpret_cast<Empty*>(reinterpret_cast<void*>(&i)); //?
// do stuff with e
【问题讨论】:
-
Empty*不允许别名为integer,所以我会拒绝。 -
@Swordfish
int这个问题是偶然的。可以是什么类型让Empty*可以给它起别名? -
如果您不想将其作为解释严格别名的帖子的副本简单地关闭,为什么不回顾一下您要完成的工作呢?这有一种XY问题的感觉。
-
@tsuki 请自己阅读:basic.lval/11
-
e是空的,你能做什么?
标签: c++ template-meta-programming void-pointers is-empty void-safety