hirthwork

Вроде недавно тут проскакивала дискуссия, что std::string в C++ не используют разделяемую память.
Либо это я ошибся, либо компиляторы считают иначе: http://ideone.com/YlNK9F
И внутри у этих строк неонка^W атомарный счётчик ссылок: http://ideone.com/Ezx3P9
В общем вопрос №1: как реальным пацанам сделать так чтобы std::string честно всё копировал, и не ебал процессор своими атомиками?
Вопрос №2: Почему для basic_string(basic_string&& str) сказано, что «data() points at the first element of an allocated copy of the array whose first element is pointed at by the original value of str.data().», а для operator =(basic_string&& str) говорится «data() points at the array whose first element was pointed at by str.data()», какого хуя столь разное поведение для столь схожих операций?