From: Anthony Williams (anthwil_at_[hidden])
Date: 2002-09-12 08:18:09


I have uploaded a class template "StrongStorage" that implements the ideas I
voiced in an earlier thread about variant types for containing any object type
in a way that supports strongly exception safe assignment and swap to:

http://groups.yahoo.com/group/boost/files/strongstorage.hpp

usage is simple:

boost::StrongStorage<SomeType> ss; // empty, contains nothing
SomeType val; // some value
boost::StrongStorage<SomeType> ss2(val); // contains a copy of val

if(ss.isEmpty()) doSomething(); // check whether it contains a value
SomeType& ref=ss2.value(); // get a reference to the value

ss=ss2; // strongly-exception safe assignment
ss.swap(ss2); // strongly-exception safe swap

It uses boost::aligned_storage for the underlying storage.

Is the interface sufficient? Is it useful? Any other comments?

Anthony