diff options
Diffstat (limited to 'contrib/src/boost/range/detail/has_member_size.hpp')
-rw-r--r-- | contrib/src/boost/range/detail/has_member_size.hpp | 132 |
1 files changed, 66 insertions, 66 deletions
diff --git a/contrib/src/boost/range/detail/has_member_size.hpp b/contrib/src/boost/range/detail/has_member_size.hpp index 0b3d9cc..0c639aa 100644 --- a/contrib/src/boost/range/detail/has_member_size.hpp +++ b/contrib/src/boost/range/detail/has_member_size.hpp @@ -1,66 +1,66 @@ -// Boost.Range library
-//
-// Copyright Neil Groves 2014.
-//
-// Use, modification and distribution are subject to 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).
-//
-// For more information, see http://www.boost.org/libs/range/
-//
-#ifndef BOOST_RANGE_DETAIL_HAS_MEMBER_SIZE_HPP
-#define BOOST_RANGE_DETAIL_HAS_MEMBER_SIZE_HPP
-
-#include <boost/type_traits/is_class.hpp>
-#include <boost/type_traits/is_member_function_pointer.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/cstdint.hpp>
-
-namespace boost
-{
- namespace range_detail
- {
-
-template<class T>
-class has_member_size_impl
-{
-private:
- template<class U, U>
- class check
- {
- };
-
- template<class C>
- static boost::uint8_t f(check<std::size_t(C::*)(void) const, &C::size>*);
-
- template<class C>
- static boost::uint16_t f(...);
-
-public:
- static const bool value =
- (sizeof(f<T>(0)) == sizeof(boost::uint8_t));
-
- typedef typename mpl::if_c<
- (sizeof(f<T>(0)) == sizeof(boost::uint8_t)),
- mpl::true_,
- mpl::false_
- >::type type;
-};
-
-template<class T>
-struct has_member_size
-{
- typedef typename mpl::and_<
- typename is_class<T>::type,
- typename has_member_size_impl<const T>::type
- >::type type;
-
- static const bool value =
- is_class<T>::value && has_member_size_impl<const T>::value;
-};
-
- } // namespace range_detail
-}// namespace boost
-
-#endif // include guard
+// Boost.Range library +// +// Copyright Neil Groves 2014. +// +// Use, modification and distribution are subject to 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). +// +// For more information, see http://www.boost.org/libs/range/ +// +#ifndef BOOST_RANGE_DETAIL_HAS_MEMBER_SIZE_HPP +#define BOOST_RANGE_DETAIL_HAS_MEMBER_SIZE_HPP + +#include <boost/type_traits/is_class.hpp> +#include <boost/type_traits/is_member_function_pointer.hpp> +#include <boost/mpl/and.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/cstdint.hpp> + +namespace boost +{ + namespace range_detail + { + +template<class T> +class has_member_size_impl +{ +private: + template<class U, U> + class check + { + }; + + template<class C> + static boost::uint8_t f(check<std::size_t(C::*)(void) const, &C::size>*); + + template<class C> + static boost::uint16_t f(...); + +public: + static const bool value = + (sizeof(f<T>(0)) == sizeof(boost::uint8_t)); + + typedef typename mpl::if_c< + (sizeof(f<T>(0)) == sizeof(boost::uint8_t)), + mpl::true_, + mpl::false_ + >::type type; +}; + +template<class T> +struct has_member_size +{ + typedef typename mpl::and_< + typename is_class<T>::type, + typename has_member_size_impl<const T>::type + >::type type; + + static const bool value = + is_class<T>::value && has_member_size_impl<const T>::value; +}; + + } // namespace range_detail +}// namespace boost + +#endif // include guard |