12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // Copyright David Abrahams 2002.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- #ifndef RETURN_INTERNAL_REFERENCE_DWA2002131_HPP
- # define RETURN_INTERNAL_REFERENCE_DWA2002131_HPP
- # include <boost/python/detail/prefix.hpp>
- # include <boost/python/default_call_policies.hpp>
- # include <boost/python/reference_existing_object.hpp>
- # include <boost/python/with_custodian_and_ward.hpp>
- # include <boost/mpl/if.hpp>
- namespace boost { namespace python {
- namespace detail
- {
- template <std::size_t>
- struct return_internal_reference_owner_arg_must_be_greater_than_zero
- # if defined(__GNUC__) || defined(__EDG__)
- {}
- # endif
- ;
- }
- template <std::size_t owner_arg = 1, class BasePolicy_ = default_call_policies>
- struct return_internal_reference
- : with_custodian_and_ward_postcall<0, owner_arg, BasePolicy_>
- {
- private:
- BOOST_STATIC_CONSTANT(bool, legal = owner_arg > 0);
- public:
- typedef typename mpl::if_c<
- legal
- , reference_existing_object
- , detail::return_internal_reference_owner_arg_must_be_greater_than_zero<owner_arg>
- >::type result_converter;
- };
- }} // namespace boost::python
- #endif // RETURN_INTERNAL_REFERENCE_DWA2002131_HPP
|