| ////////////////////////////////////////////////////////////////////////////// |
| // |
| // Copyright (C) 2011-2013 Vicente J. Botet Escriba |
| // |
| // 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) |
| // |
| // See http://www.boost.org/libs/thread for documentation. |
| // |
| ////////////////////////////////////////////////////////////////////////////// |
| |
| #ifndef BOOST_THREAD_DETAIL_IS_CONVERTIBLE_HPP |
| #define BOOST_THREAD_DETAIL_IS_CONVERTIBLE_HPP |
| |
| #include <boost/type_traits/is_convertible.hpp> |
| #include <boost/thread/detail/move.hpp> |
| |
| namespace boost |
| { |
| namespace thread_detail |
| { |
| template <typename T1, typename T2> |
| struct is_convertible : boost::is_convertible<T1,T2> {}; |
| |
| #if defined BOOST_NO_CXX11_RVALUE_REFERENCES |
| |
| #if defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 1300) |
| |
| #if defined BOOST_THREAD_USES_MOVE |
| template <typename T1, typename T2> |
| struct is_convertible< |
| rv<T1> &, |
| rv<rv<T2> > & |
| > : false_type {}; |
| #endif |
| |
| #elif defined __GNUC__ && (__GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ <= 4 )) |
| |
| template <typename T1, typename T2> |
| struct is_convertible<T1&, T2&> : boost::is_convertible<T1, T2> {}; |
| #endif |
| |
| #endif |
| } |
| |
| } // namespace boost |
| |
| |
| #endif // BOOST_THREAD_DETAIL_MEMORY_HPP |