/
niceSOFT
/
cmake
Обзор
Документация
Войти
/
niceSOFT
/
cmake
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Utilities/std/cmext/memory
38 строк
789 B
Kitware Robot
LICENSE: Replace references to Copyright.txt with LICENSE.rst
03 мар 2025, 18:43
03 мар 2025, 18:43
1772622
Код
Авторство
О чём код?
// -*-c++-*- // vim: set ft=cpp: /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include <typeinfo> #include <cm/type_traits> namespace cm { template < typename T, typename O, cm::enable_if_t<std::is_pointer<decltype(std::declval<O>().get())>::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<decltype(std::declval<O>().get())>::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