在标准C++ ios库中,是否可以保证在以相同的&stream.iword(ind) != &stream.pword(ind)值调用相同的stream时调用ind

此外,是否可以保证我可以在给定相同索引的情况下分别使用void*long值(即,它们未实现为并集等)?

我想这里的X-Y问题是如何得知给定随机流的情况下,我的自定义值(使用xalloc()进行“分配”)是否已初始化?我问是因为我见过人们使用pword()检查一个魔术常数,然后在先前条件失败的情况下使用iword()初始化该值。

我主要关心C++ 11及更高版本,但是欢迎任何相关的历史信息。

最佳答案

C++标准规定iword()pword()应该表现为好像在操纵两个单独的独立存储块-而不是说单个块,其内容有时被解释为long,而有时被解释为void*





[ios.base.storage] / 5 重复完全相同的措词,用pword替换iword,用parray替换iarray,用void*替换long

重要的部分是“保留了存储的值...”-随后具有给定索引的iword调用应看到写入到存储的值,而先前具有相同索引的iword调用提供了引用,无论的中间方法调用(而不是copyfmt),即使该中间方法调用是pword(反之亦然)。

关于c++ - 给定相同的索引,是否保证iword()和pword()引用单独的基础值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42196926/

10-11 18:33