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"
}