// -*-c++-*-
// vim: set ft=cpp:

/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file Copyright.txt or https://cmake.org/licensing for details.  */
#ifndef cmext_memory
#define cmext_memory

#include <typeinfo>

#include <cm/type_traits>

namespace cm {

template <typename T, typename O,
          cm::enable_if_t<
            std::is_pointer<cm::invoke_result_t<decltype(&O::get), O>>::value,
            int> = 0>
T& static_reference_cast(O& item)
{
  return *(static_cast<T*>(item.get()));
}
template <typename T, typename O,
          cm::enable_if_t<
            std::is_pointer<cm::invoke_result_t<decltype(&O::get), O>>::value,
            int> = 0>
T& dynamic_reference_cast(O& item)
{
  auto p = dynamic_cast<T*>(item.get());

  if (p == nullptr) {
    throw std::bad_cast();
  }

  return *p;
}

} // namespace cm

#endif
