@@ -121,7 +121,6 @@ struct is_object_manager
121121{
122122};
123123
124- # ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
125124template <class T >
126125struct is_reference_to_object_manager
127126 : mpl::false_
@@ -151,79 +150,6 @@ struct is_reference_to_object_manager<T const volatile&>
151150 : is_object_manager<T>
152151{
153152};
154- # else
155-
156- namespace detail
157- {
158- typedef char (&yes_reference_to_object_manager)[1];
159- typedef char (&no_reference_to_object_manager)[2];
160-
161- // A number of nastinesses go on here in order to work around MSVC6
162- // bugs.
163- template <class T >
164- struct is_object_manager_help
165- {
166- typedef typename mpl::if_<
167- is_object_manager<T>
168- , yes_reference_to_object_manager
169- , no_reference_to_object_manager
170- >::type type;
171-
172- // If we just use the type instead of the result of calling this
173- // function, VC6 will ICE.
174- static type call ();
175- };
176-
177- // A set of overloads for each cv-qualification. The same argument
178- // is passed twice: the first one is used to unwind the cv*, and the
179- // second one is used to avoid relying on partial ordering for
180- // overload resolution.
181- template <class U >
182- typename is_object_manager_help<U>
183- is_object_manager_helper (U*, void *);
184-
185- template <class U >
186- typename is_object_manager_help<U>
187- is_object_manager_helper (U const *, void const *);
188-
189- template <class U >
190- typename is_object_manager_help<U>
191- is_object_manager_helper (U volatile *, void volatile *);
192-
193- template <class U >
194- typename is_object_manager_help<U>
195- is_object_manager_helper (U const volatile *, void const volatile *);
196-
197- template <class T >
198- struct is_reference_to_object_manager_nonref
199- : mpl::false_
200- {
201- };
202-
203- template <class T >
204- struct is_reference_to_object_manager_ref
205- {
206- static T sample_object;
207- BOOST_STATIC_CONSTANT (
208- bool , value
209- = (sizeof (is_object_manager_helper(&sample_object, &sample_object).call())
210- == sizeof (detail::yes_reference_to_object_manager)
211- )
212- );
213- typedef mpl::bool_<value> type;
214- };
215- }
216-
217- template <class T >
218- struct is_reference_to_object_manager
219- : mpl::if_<
220- is_reference<T>
221- , detail::is_reference_to_object_manager_ref<T>
222- , detail::is_reference_to_object_manager_nonref<T>
223- >::type
224- {
225- };
226- # endif
227153
228154}}} // namespace boost::python::converter
229155
0 commit comments