
Dave A: Just out of curiosity, how many compilers like your technique? Daniel Wallin: I have only been skimming this thread. Could you comment on its relevance to the move stuff you sent me earlier? In particular, does this thread suggest any changes to the code you sent me? Also, I tested your code with gcc-3.3, and it mostly liked it. I believe that it likes the moving part, but it triggers a bizarre error on an unrelated test that I think is a bug in 3.3 (due to improper instantiations during overload resolution...at least, I hope that's all it is, because I'm upgrading to 3.3.2 right now, and that fixes a bug of that nature). Also, do you expect your technique to work properly for the conversion copy c'tor case: template <typename U, policies...> smart_ptr(smart_ptr<U, policies> const&p); template <typename U, policies...> smart_ptr(smart_ptr<U, policies>&p); These two c'tors are still in the code. Do you think that will interfere with the move semantics when doing a move-convert? i.e.: smart_ptr<Base, destructive_copy> p( smart_ptr<Derived, destructive_copy>(new Derived) ); If it does, what do you suggest we do? Simply removing the non-const& c'tor is undesirable because it limits what policies can do. Dave --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.571 / Virus Database: 361 - Release Date: 1/26/2004