template<typename ForwardIterator, typename StringType>
inline bool starts_with(ForwardIterator begin, ForwardIterator end, const StringType& target)
{
assert(begin < end);
if (std::distance(std::begin(target), std::end(target)) > std::distance(begin, end))
{
return false;
}
return std::equal(std::begin(target), std::end(target), begin);
}
Dies scheitert daran, dass std::end
gibt eine nach der '\0'
wenn StringType
ist ein String-Literal, nicht die '\0'
. (In dieser Hinsicht ist es ähnlich wie bei der Bereichsbezogene Inkonsistenz der Schleife ) Wie kann man das umgehen?