在标准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/