標準のC++ ios
ライブラリでは、同じstream
で呼び出されたときに&stream.iword(ind) != &stream.pword(ind)
が同じind
の値であることが保証されていますか?iword()とpword()は同じインデックスであることが保証されています。
さらに、void*
とlong
の値を同じインデックスで個別に使用できることが保証されていますか(つまり、ユニオンとして実装されていないなど)
ここでX-Yの問題があるとすれば、ランダムなストリームで私のカスタム値(「割り当て済み」はxalloc()
)が初期化されているかどうかをどのように知ることができますか?人々がpword()
を使用して魔法の定数を確認した後、前の条件が失敗した場合にその値を初期化するためにiword()
を使用しているのを見たので尋ねます。
私は主にC++ 11以上を気にしますが、関連する履歴情報は歓迎します。 、たとえば、その内容は時々long
とvoid*
他の回と解釈されている単一のブロックをではなく -
'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