Following up on the discussion from this question, I was wondering how does one using native C++ determine programmatically whether or not the std::string implementation they ar
Using &s1[0]
to take the adress is not what you want, [0]
returns a writable reference and will create a copy.
Use data() instead, it returns a const char*, and your tests may pass.
The copy-on-write paradigm is dependent on knowing when you are doing a write. This will occur whenever the object is returning a writable reference.
If you work with const references to the strings, you may be able to compare the addresses if the class was specialized to disable the copy when returning a const reference to the data.