MSVC ловит ошибку в строке 7 в следующем коде.В частности, remove_copy()
в строке 9 копирует в строку, которая недостаточно велика.При отладке в MSVC ошибка: Выражение: невозможно разыменовать строковый итератор, поскольку он находится вне диапазона (например, конечный итератор) .При использовании Clang-8 я не получаю сообщение об ошибке.
Как я могу отловить эту ошибку, используя Clang в Windows или Linux?
#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"
}