【发布时间】:2016-09-20 16:21:16
【问题描述】:
假设我有两种类型 A 和 B。
那我做这个类型
struct Pair{
A a;
B b;
};
现在我有了这样的功能。
void function(Pair& pair);
让我们假设function 只会使用这对中的a 部分。
那么以这种方式使用和调用函数是未定义的行为吗?
A a;
function(reinterpret_cast<Pair&>(a));
我知道编译器可以在成员之后插入填充字节,但它也可以在第一个成员之前插入吗?
【问题讨论】:
-
如果函数只访问
A部分,那为什么它需要Pair输入而不是A输入??? -
其实这个例子是通用的,以便描述我的问题。我想知道这是否未定义。但假设它是实现一组通用行为的一组函数的一部分,并且必须具有相同的签名。
标签: c++ struct undefined-behavior