【发布时间】:2012-09-13 21:25:37
【问题描述】:
特别是如果 Tj 是内置类型或指向内置类型的指针,是否有人知道编译器不会布局内存所以offsetof(s, tj) != &get<j>(t) - &get<0>(t)?
【问题讨论】:
-
这样的措辞,我不禁认为你会做一些可怕的事情,比如把一个指向一种类型的指针当作指向另一种类型的指针。请...不要那样做。
-
通过获得这些知识,您试图实现什么破事?
-
您是否知道 C++11 标准不要求实现以这种方式实现
tuple?我假设您会这样做,因为您要询问哪些“编译器”会这样做。如果您希望它们在所有平台上以某种方式实现,请自行实现或使用boost::tuple。不要依赖于变幻莫测的标准库实现,这些实现可以更改从一个版本到另一个版本。 -
该标准对
tupleiirc 的内部布局没有任何要求。此外,afaik 实现tuple的最简单方法将以相反的顺序存储元素。这应该可以回答您正在做的事情是否是一个好主意的问题。 -
为什么这么讨厌?我认为这是一个合理的问题。答案似乎是“没有关系”。