
There's a pretty nice implementation of COW objects in the Adobe Open Source library (http://opensource.adobe.com). You might take a look at that. I saw it. Honestly, after I implemented COW myself :) Do you want to say it's no sence to double existing things?
A compiler that implements NRVO (Named Return Value Optimization) can return an object (essentially) by const reference without any special COW wrapper classes. Agree, this is not the best example for such a compiler. AFAIK VC++ doesn't implement this optimization.
Also, some C++ Standard Library implementations use a reference-counted std::string implementation, so this extra effort would be wasted. STLport and Dinkumware (I suppose most widely used) doesn't belong to that implementations. That's why personally I require COW-wrapper.