mirror of
https://github.com/boostorg/mpl.git
synced 2025-08-05 15:54:39 +02:00
make has_size use has_xxx implementation
[SVN r16303]
This commit is contained in:
@@ -17,47 +17,10 @@
|
|||||||
#ifndef BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
|
#ifndef BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
|
||||||
#define BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
|
#define BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
|
||||||
|
|
||||||
#include "boost/mpl/aux_/type_wrapper.hpp"
|
#include "boost/mpl/aux_/has_xxx.hpp"
|
||||||
#include "boost/mpl/aux_/yes_no.hpp"
|
|
||||||
#include "boost/mpl/aux_/config/msvc_typename.hpp"
|
|
||||||
#include "boost/mpl/aux_/config/overload_resolution.hpp"
|
|
||||||
#include "boost/config.hpp"
|
|
||||||
|
|
||||||
namespace boost {
|
namespace boost { namespace mpl { namespace aux {
|
||||||
namespace mpl {
|
BOOST_MPL_HAS_XXX_TRAIT_DEF(size)
|
||||||
namespace aux {
|
}}}
|
||||||
|
|
||||||
#if !defined(BOOST_MPL_BROKEN_OVERLOAD_RESOLUTION)
|
|
||||||
|
|
||||||
// the implementation below is based on a USENET newsgroup posting by
|
|
||||||
// Rani Sharoni (comp.lang.c++.moderated, 2002-03-17 07:45:09 PST)
|
|
||||||
|
|
||||||
template< typename T >
|
|
||||||
yes_tag has_size_helper(type_wrapper<T>*, BOOST_MSVC_TYPENAME T::size*);
|
|
||||||
|
|
||||||
template< typename T >
|
|
||||||
no_tag has_size_helper(type_wrapper<T>*, ...);
|
|
||||||
|
|
||||||
template< typename T >
|
|
||||||
struct has_size
|
|
||||||
{
|
|
||||||
BOOST_STATIC_CONSTANT(bool, value =
|
|
||||||
sizeof(has_size_helper((type_wrapper<T>*)0, 0)) == sizeof(yes_tag)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
template< typename T >
|
|
||||||
struct has_size
|
|
||||||
{
|
|
||||||
BOOST_STATIC_CONSTANT(bool, value = false);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
} // namespace aux
|
|
||||||
} // namespace mpl
|
|
||||||
} // namespace boost
|
|
||||||
|
|
||||||
#endif // BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
|
#endif // BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
|
||||||
|
Reference in New Issue
Block a user