void destroy() { static_cast< T* >(storage.address())->~T(); }
explicit node(T const& val) { new (storage.address()) T(val); }
T& value() { return *static_cast< T* >(storage.address()); }
T * data() { return static_cast<T*>(storage_.address()); }
void destroy() { static_cast< T* >(storage.address())->~T(); }
explicit node(T const& val) { new (storage.address()) T(val); }
T& value() { return *static_cast< T* >(storage.address()); }
T * data() { return static_cast<T*>(storage_.address()); }