3#include "ConstExplicitlySharedDataPointer.h"
8 template<
typename _T2_,
typename _T_>
9 requires details::base_of<_T2_, _T_>
12#pragma GCC diagnostic ignored "-Wstrict-aliasing"
14#pragma GCC diagnostic error "-Wstrict-aliasing"
16 template<
typename _T_>
21 template<
typename _T2_,
typename _T_>
22 requires details::base_of<typename _T2_::Type, _T_>
23 QList<_T2_> listCast(
const QList<ConstExplicitlySharedDataPointer<_T_>>& _list)
25#pragma GCC diagnostic ignored "-Wstrict-aliasing"
26 return *
reinterpret_cast<const QList<_T2_>*
>(&_list);
27#pragma GCC diagnostic error "-Wstrict-aliasing"
29 template<
typename _T2_,
typename _T_>
30 requires(std::is_base_of_v<_T2_, _T_>)
34 for(
const ConstExplicitlySharedDataPointer<_T_>& t : _list)
36 transitions.append(t.data());
40 template<
typename _T2_,
typename _T_>
41 requires(not details::base_of<_T2_, _T_>)
42 and std::convertible_to<_T_, _T2_> and (not std::same_as<_T_, _T2_>)
46 for(
const _T_& t : _list)
48 transitions.append(t);
52 template<
typename _T_>
53 QVector<_T_> vectorCast(
const QList<_T_>& _list)
55 QVector<_T_> transitions;
56 std::copy(_list.begin(), _list.end(), std::back_inserter(transitions));