26 #ifndef MLN_CORE_INTERNAL_EXACT_GCC_2_95_HH
27 # define MLN_CORE_INTERNAL_EXACT_GCC_2_95_HH
34 # include <mln/core/internal/exact.hh>
49 typedef typename mln::internal::exact_<T>::ret E;
53 return *internal::exact_<T>::run(&t);
58 struct exact_gcc_2_95< const
T >
60 typedef typename mln::internal::exact_<T>::ret E;
64 return *internal::exact_<T>::run(const_cast<T*>(&t));
69 struct exact_gcc_2_95<
T* >
71 typedef typename mln::internal::exact_<T>::ret E;
75 return internal::exact_<T>::run(t);
80 struct exact_gcc_2_95< const
T* >
82 typedef typename mln::internal::exact_<T>::ret E;
84 static ret run(
const T* t)
86 return internal::exact_<T>::run(const_cast<T*>(t));
95 struct exact_const_gcc_2_95
97 typedef typename mln::internal::exact_<T>::ret E;
101 return *internal::exact_<T>::run(&t);
105 template <
typename T>
106 struct exact_const_gcc_2_95< const
T >
108 typedef typename mln::internal::exact_<T>::ret E;
109 typedef const E& ret;
112 return *internal::exact_<T>::run(const_cast<T*>(&t));
116 template <
typename T>
117 struct exact_const_gcc_2_95<
T* >
119 typedef typename mln::internal::exact_<T>::ret E;
123 return internal::exact_<T>::run(t);
127 template <
typename T>
128 struct exact_const_gcc_2_95< const
T*
const >
130 typedef typename mln::internal::exact_<T>::ret E;
131 typedef const E* ret;
134 return internal::exact_<T>::run(const_cast<T*>(t));
138 template <
typename T>
139 struct exact_const_gcc_2_95< const
T* >
141 typedef typename mln::internal::exact_<T>::ret E;
142 typedef const E* ret;
143 static ret run(
const T* t)
145 return internal::exact_<T>::run(const_cast<T*>(t));
154 template <
typename T>
155 typename internal::exact_gcc_2_95<T>::ret
159 return internal::exact_gcc_2_95<T>::run(t);
162 template <
typename T>
163 typename internal::exact_const_gcc_2_95<T>::ret
167 return internal::exact_const_gcc_2_95<T>::run(const_cast<T&>(t));
174 #endif // ! MLN_CORE_INTERNAL_EXACT_GCC_2_95_HH