30 #ifndef _GLIBCXX_CAST_H
31 #define _GLIBCXX_CAST_H 1
33 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
35 _GLIBCXX_BEGIN_NAMESPACE_VERSION
51 template<
typename _ToType>
53 {
typedef typename _ToType::element_type* type; };
55 template<
typename _ToType>
57 {
typedef _ToType* type; };
66 template<
typename _ToType,
typename _FromType>
70 type
>(__arg.get())); }
72 template<
typename _ToType,
typename _FromType>
74 __dynamic_pointer_cast(
const _FromType& __arg)
75 {
return _ToType(
dynamic_cast<typename _Caster<_ToType>::
76 type
>(__arg.get())); }
78 template<
typename _ToType,
typename _FromType>
80 __const_pointer_cast(
const _FromType& __arg)
81 {
return _ToType(
const_cast<typename _Caster<_ToType>::
82 type
>(__arg.get())); }
84 template<
typename _ToType,
typename _FromType>
86 __reinterpret_pointer_cast(
const _FromType& __arg)
87 {
return _ToType(
reinterpret_cast<typename _Caster<_ToType>::
88 type
>(__arg.get())); }
94 template<
typename _ToType,
typename _FromType>
100 template<
typename _ToType,
typename _FromType>
102 __dynamic_pointer_cast(_FromType* __arg)
103 {
return _ToType(
dynamic_cast<typename _Caster<_ToType>::
106 template<
typename _ToType,
typename _FromType>
108 __const_pointer_cast(_FromType* __arg)
109 {
return _ToType(
const_cast<typename _Caster<_ToType>::
112 template<
typename _ToType,
typename _FromType>
114 __reinterpret_pointer_cast(_FromType* __arg)
115 {
return _ToType(
reinterpret_cast<typename _Caster<_ToType>::
118 _GLIBCXX_END_NAMESPACE_VERSION
121 #endif // _GLIBCXX_CAST_H
GNU extensions for public use.
_ToType __static_pointer_cast(const _FromType &__arg)