Существует ли в plain C++ класс аналогичный QSharedData
Чисто академический интерес, есть ли на чистом C++ или в крайнем случае на Boost контейнеры с неявным и явным разделением, реализующие технику Copy on write аналогично Qtшному QSharedData и QSharedDataPointer'у.
std::shared_ptr (доступен в C++11) или boost::shared_ptr (в более ранних стандартах) должны быть аналогами QSharedPointer. Нужно только обратить внимание на thread safety.
Это не то на самом деле. Тут другая семантика, про shared_ptr я в курсе, но между QSharedPointer и QSharedDataPointer есть разница и она принципиальна.
Основываясь на http://doc.qt.digia.com/qt/qsharedpointer.html#details, я так понял, что shared_ptr больше похож как раз на QSharedPointer а не QSharedDataPointer: shared_ptr не создаёт никаких автоматических копий при записи. (то есть в shared_ptr никакого CoW не втсроено)
Посмотрите ещё тут. Возможно, boost::intrusive_ptr это то что вы ищите.
В Qt везде написано, что классы потокобезопасны. Это значит, что все счётчики ссылок защищены локами. Это может приводить к тормозам на многопоточных программах. std::shared_ptr тоже потокобезопасный и использует локи/атомики для защиты счёткика ссылок.