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 链接运行它时- 我什么也没得到,但工作不正确。

现在的问题是:是否有 GCC 选项可以打开运行时比较迭代器以获得正确的范围,或者抛出适当的异常,或者assert在迭代器超出范围时调用。

PS我清楚地知道,该代码正确,可能有UB。而且我知道如何纠正它,但我希望 GCC 将来能帮助我))

4

0 回答 0