//----------------------------------------------------------------------------- | |
// boost variant/detail/cast_storage.hpp header file | |
// See http://www.boost.org for updates, documentation, and revision history. | |
//----------------------------------------------------------------------------- | |
// | |
// Copyright (c) 2003 | |
// Eric Friedman | |
// | |
// Distributed under the Boost Software License, Version 1.0. (See | |
// accompanying file LICENSE_1_0.txt or copy at | |
// http://www.boost.org/LICENSE_1_0.txt) | |
#ifndef BOOST_VARIANT_DETAIL_CAST_STORAGE_HPP | |
#define BOOST_VARIANT_DETAIL_CAST_STORAGE_HPP | |
#include "boost/config.hpp" | |
namespace boost { | |
namespace detail { namespace variant { | |
/////////////////////////////////////////////////////////////////////////////// | |
// (detail) function template cast_storage | |
// | |
// Casts the given storage to the specified type, but with qualification. | |
// | |
template <typename T> | |
inline T& cast_storage( | |
void* storage | |
BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(T) | |
) | |
{ | |
return *static_cast<T*>(storage); | |
} | |
template <typename T> | |
inline const T& cast_storage( | |
const void* storage | |
BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(T) | |
) | |
{ | |
return *static_cast<const T*>(storage); | |
} | |
}} // namespace detail::variant | |
} // namespace boost | |
#endif // BOOST_VARIANT_DETAIL_CAST_STORAGE_HPP |