2

次のコードがあるとします。

std::vector< int > from( 5 );
std::vector< int > to( 10 );
std::copy( from.begin(), from.begin() + 10, to.begin() );

それとも多分

std::vector< int >::iterator e = from.begin();
std::advance( e, 10 );
std::copy( from.begin(), e, to.begin() );

Visual Studio でデバッグ モードで実行すると、「イテレータが範囲外です」というテキストでアサートが失敗しました。GCC - LWS リンク- で実行したとき、何も得られませんでしたが、正しく動作しませんでした。

ここでの質問: 実行時にイテレータを比較して正しい範囲をオンにし、適切な例外をスローするかassert、イテレータが範囲外の場合に呼び出す GCC オプションはありますか。

PS私は明らかに、コード正しくなく、おそらくUBを持っていることを知っています。そして、私はそれを修正する方法を知っていますが、GCCが将来私を助けてくれることを望んでいます))

4

0 に答える 0