summaryrefslogtreecommitdiff
path: root/boost/python/copy_const_reference.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/python/copy_const_reference.hpp')
-rw-r--r--boost/python/copy_const_reference.hpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/boost/python/copy_const_reference.hpp b/boost/python/copy_const_reference.hpp
new file mode 100644
index 0000000000..19e3b42332
--- /dev/null
+++ b/boost/python/copy_const_reference.hpp
@@ -0,0 +1,43 @@
+// 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 COPY_CONST_REFERENCE_DWA2002131_HPP
+# define COPY_CONST_REFERENCE_DWA2002131_HPP
+
+# include <boost/python/detail/prefix.hpp>
+# include <boost/python/detail/indirect_traits.hpp>
+# include <boost/mpl/if.hpp>
+# include <boost/python/to_python_value.hpp>
+
+namespace boost { namespace python {
+
+namespace detail
+{
+ template <class R>
+ struct copy_const_reference_expects_a_const_reference_return_type
+# if defined(__GNUC__) && __GNUC__ >= 3 || defined(__EDG__)
+ {}
+# endif
+ ;
+}
+
+template <class T> struct to_python_value;
+
+struct copy_const_reference
+{
+ template <class T>
+ struct apply
+ {
+ typedef typename mpl::if_c<
+ indirect_traits::is_reference_to_const<T>::value
+ , to_python_value<T>
+ , detail::copy_const_reference_expects_a_const_reference_return_type<T>
+ >::type type;
+ };
+};
+
+
+}} // namespace boost::python
+
+#endif // COPY_CONST_REFERENCE_DWA2002131_HPP