As you noted, none of the member functions on std::string
are marked volatile
, so you can't perform any operations on a volatile std::string
. I think the only option would be to cast away volatile
ness and perform operations on the result, as shown here:
const_cast<std::string&>(myVolatileString) = "Now I'm different!"
Fundamentally, though, you probably shouldn't be making a volatile std::string
. volatile
is appropriate for objects that might be mutated by external sources or changed by multiple threads. This first case is pretty unusual and would require some very special hardware that knew the layout of std::string
. The second is unsafe because std::string
isn't thread-safe.
Hope this helps!