28 _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx);
44 template<
typename _ToType>
46 {
typedef typename _ToType::element_type* type; };
48 template<
typename _ToType>
50 {
typedef _ToType* type; };
59 template<
typename _ToType,
typename _FromType>
63 type
>(__arg.get())); }
65 template<
typename _ToType,
typename _FromType>
67 __dynamic_pointer_cast(
const _FromType& __arg)
68 {
return _ToType(
dynamic_cast<typename _Caster<_ToType>::
69 type
>(__arg.get())); }
71 template<
typename _ToType,
typename _FromType>
73 __const_pointer_cast(
const _FromType& __arg)
74 {
return _ToType(
const_cast<typename _Caster<_ToType>::
75 type
>(__arg.get())); }
77 template<
typename _ToType,
typename _FromType>
79 __reinterpret_pointer_cast(
const _FromType& __arg)
80 {
return _ToType(
reinterpret_cast<typename _Caster<_ToType>::
81 type
>(__arg.get())); }
87 template<
typename _ToType,
typename _FromType>
93 template<
typename _ToType,
typename _FromType>
95 __dynamic_pointer_cast(_FromType* __arg)
96 {
return _ToType(
dynamic_cast<typename _Caster<_ToType>::
99 template<
typename _ToType,
typename _FromType>
101 __const_pointer_cast(_FromType* __arg)
102 {
return _ToType(
const_cast<typename _Caster<_ToType>::
105 template<
typename _ToType,
typename _FromType>
107 __reinterpret_pointer_cast(_FromType* __arg)
108 {
return _ToType(
reinterpret_cast<typename _Caster<_ToType>::
111 _GLIBCXX_END_NAMESPACE
_ToType __static_pointer_cast(const _FromType &__arg)