1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #ifndef BOOST_MPL_PRINT_HPP_INCLUDED
- #define BOOST_MPL_PRINT_HPP_INCLUDED
- #include <boost/mpl/aux_/config/msvc.hpp>
- #include <boost/mpl/identity.hpp>
- namespace boost { namespace mpl {
-
- namespace aux {
- #if defined(BOOST_MSVC)
- # pragma warning(push, 3)
- # pragma warning(disable: 4307)
- #elif defined(__MWERKS__)
- # pragma warn_hidevirtual on
- struct print_base { virtual void f() {} };
- #endif
- #if defined(__EDG_VERSION__)
- template <class T>
- struct dependent_unsigned
- {
- static const unsigned value = 1;
- };
- #endif
- }
- template <class T>
- struct print
- : mpl::identity<T>
- #if defined(__MWERKS__)
- , aux::print_base
- #endif
- {
- #if defined(BOOST_MSVC)
- enum { n = sizeof(T) + -1 };
- #elif defined(__MWERKS__)
- void f(int);
- #else
- enum {
- n =
- # if defined(__EDG_VERSION__)
- aux::dependent_unsigned<T>::value > -1
- # else
- sizeof(T) > -1
- # endif
- };
- #endif
- };
- #if defined(BOOST_MSVC)
- # pragma warning(pop)
- #elif defined(__MWERKS__)
- # pragma warn_hidevirtual reset
- #endif
- }}
- #endif
|