在標準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