O$>Весь вопрос в том, кто потом будет освобождать память.
{skip}
А что кардинально изменится, если в этих двух примерах явно написать c_str()?
По-моему, зря они не включили этот оператор. Как будто в c++ мало других мест (даже в STL), где можно совершить ошибку (перепутать begin() и end(), например).