哪个clang工具会超出范围迭代器?

时间:2019-06-08 17:28:31

标签: c++ clang

MSVC在以下代码中捕获了第7行中的错误。具体来说,第9行上的remove_copy()复制到一个不够大的字符串中。在MSVC中进行调试时,错误为 Expression:无法取消引用字符串迭代器,因为它超出范围(例如,结束迭代器)。使用Clang-8时,我没有任何错误。

如何在Windows或Linux上使用Clang捕获此错误?

#include <iostream>
#include <string>
#include <algorithm>

int main() {
    std::string source{ "foo-bar-baz" };
    std::string dest; // PROBLEM

    auto last = std::remove_copy(begin(source), end(source), begin(dest), '-');
    dest.erase(last, end(dest));

    std::cout << source << "\n"; // "foo-bar-baz"
    std::cout << dest << "\n"; // expected: "foobarbaz"
}

0 个答案:

没有答案