I mean possible lifetime management options are:
1. string&
2. string*
3. shared_ptr<string>
4. weak_ptr<string>
5. unshared_ptr<string> (not interlocked; does something like
this exist?)
This way string is just like any other object. It's C++ after
all, the foot must be shot.
Exactly, you can compose string with the semantics you want!
You are making C++ look good:) Although I can't recall ever
actually wrapping a string in shared_ptr/weak_ptr/unique_ptr...
6. string::c_str() (let char* botch string internals)
It returns a const char* so you would have to cast const away to
do that--