rem: char &operator[](int i)	{ assert(i>=0 && i<_len); return (char &)_s[i]; }
add: char operator[](int i) const	{ assert(i>=0 && i<_len); return (char)_s[i]; }
context:   char &operator[](int i)	{ assert(i>=0 && i<_len); return (char &)_s[i]; }