Listing 1: The implementation of assignment.
StrongStorage& operator=(const StrongStorage& other) { if(this!=&other) { if(other.isEmpty()) { emptyCache(); } else { getOtherCache().template construct_as<value_type>(other.value()); emptyCache(); useCache1=!useCache1; cacheInitialized=true; } } return *this; }