cast_storage.hpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //-----------------------------------------------------------------------------
  2. // boost variant/detail/cast_storage.hpp header file
  3. // See http://www.boost.org for updates, documentation, and revision history.
  4. //-----------------------------------------------------------------------------
  5. //
  6. // Copyright (c) 2003
  7. // Eric Friedman
  8. //
  9. // Distributed under the Boost Software License, Version 1.0. (See
  10. // accompanying file LICENSE_1_0.txt or copy at
  11. // http://www.boost.org/LICENSE_1_0.txt)
  12. #ifndef BOOST_VARIANT_DETAIL_CAST_STORAGE_HPP
  13. #define BOOST_VARIANT_DETAIL_CAST_STORAGE_HPP
  14. #include <boost/config.hpp>
  15. namespace boost {
  16. namespace detail { namespace variant {
  17. ///////////////////////////////////////////////////////////////////////////////
  18. // (detail) function template cast_storage
  19. //
  20. // Casts the given storage to the specified type, but with qualification.
  21. //
  22. template <typename T>
  23. inline T& cast_storage(void* storage)
  24. {
  25. return *static_cast<T*>(storage);
  26. }
  27. template <typename T>
  28. inline const T& cast_storage(const void* storage)
  29. {
  30. return *static_cast<const T*>(storage);
  31. }
  32. }} // namespace detail::variant
  33. } // namespace boost
  34. #endif // BOOST_VARIANT_DETAIL_CAST_STORAGE_HPP