cast(): use cast_op_type mechanism

This commit is contained in:
Wenzel Jakob 2016-05-03 13:27:57 +02:00
parent 65f0c2aeb7
commit aadc2f3d8c

View File

@ -764,10 +764,11 @@ public:
NAMESPACE_END(detail) NAMESPACE_END(detail)
template <typename T> inline T cast(handle handle) { template <typename T> inline T cast(handle handle) {
detail::type_caster<typename detail::intrinsic_type<T>::type> conv; typedef detail::type_caster<typename detail::intrinsic_type<T>::type> type_caster;
type_caster conv;
if (!conv.load(handle, true)) if (!conv.load(handle, true))
throw cast_error("Unable to cast Python object to C++ type"); throw cast_error("Unable to cast Python object to C++ type");
return (T) conv; return conv.operator typename type_caster::template cast_op_type<T>();
} }
template <typename T> inline object cast(const T &value, return_value_policy policy = return_value_policy::automatic_reference, handle parent = handle()) { template <typename T> inline object cast(const T &value, return_value_policy policy = return_value_policy::automatic_reference, handle parent = handle()) {