在标准C++ ios
库中,是否保证&stream.iword(ind) != &stream.pword(ind)
在同一个stream
上调用时具有相同的ind
值?鉴于相同的索引,是否iword()和pword()保证引用单独的基础值?
此外,保证我可以单独使用void*
和long
值给予相同的索引(即它们不作为联合等实现)?
我想这里的X-Y问题是如何知道给定一个随机流,我的自定义值(“已分配”使用xalloc()
)是否已初始化?我问,因为我看到人们使用pword()
来检查魔术常数,然后iword()
来初始化该值,如果前面的条件失败。
我主要关心C++ 11及以后的版本,尽管欢迎任何相关的历史信息。
当你调用'pword()'时,'iword()'返回的引用无效,所以我不确定地址是否可以进行有意义的比较。 – Cornstalks
@Cornstalks有趣;它是如何失效?你的意思是你可以使用'pword()'或'iword()',但不能同时使用? – Qix
以下是一些关于['iword'](http://en.cppreference.com/w/cpp/io/ios_base/iword)和['pword'](http:/ /en.cppreference.com/w/cpp/io/ios_base/pword)。对于这两种方法,请注意句子*“引用可能会因此'ios_base'对象[*]”*上的任何操作而失效。你可以使用任何一个,但是一旦你调用下一个函数,你需要放弃旧的引用,不再使用它。想想它就像是在一个'std :: vector'中获取一个对象的地址。这很好,但是一旦你调用'push_back',那个地址就会失效。 – Cornstalks