/* [auto_generated] boost/numeric/odeint/util/unwrap_reference.hpp [begin_description] unwrap_reference [end_description] Copyright 2012-2013 Karsten Ahnert Copyright 2012-2013 Mario Mulansky 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 BOOST_NUMERIC_ODEINT_UTIL_UNWRAP_REFERENCE_HPP_INCLUDED #define BOOST_NUMERIC_ODEINT_UTIL_UNWRAP_REFERENCE_HPP_INCLUDED #include #include namespace boost { template class reference_wrapper; template struct unwrap_reference; namespace numeric { namespace odeint { template struct unwrap_reference { typedef typename std::remove_reference::type type; }; template struct unwrap_reference< std::reference_wrapper > { typedef typename std::remove_reference::type type; }; template struct unwrap_reference< boost::reference_wrapper > { typedef typename boost::unwrap_reference::type type; }; namespace detail { using ::std::ref; } } } } /* * * the following is the suggested way, but unfortunately it does not work with all compilers. */ /* #include #ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL #include #else #include #endif namespace boost { namespace numeric { namespace odeint { #ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL template struct unwrap_reference { typedef typename std::remove_reference::type type; }; template struct unwrap_reference< std::reference_wrapper > { typedef typename std::remove_reference::type type; }; template struct unwrap_reference< boost::reference_wrapper > { typedef typename boost::unwrap_reference::type type; }; #else using ::boost::unwrap_reference; #endif } } } namespace boost { namespace numeric { namespace odeint { namespace detail { #ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL using ::std::ref; #else using ::boost::ref; #endif } } } } */ #endif // BOOST_NUMERIC_ODEINT_UTIL_UNWRAP_REFERENCE_HPP_INCLUDED