Everything seems to be in order, as row size 0 :
21.4.6.5 basic_string :: erase [string :: erase]
basic_string<charT,traits,Allocator>& erase(size_type pos = 0, size_type n = npos);
1 Required: pos <= size()
2 Throws: out_of_range if pos > size() .
source share