Blame boost/mpl/print.hpp

Packit 58578d
Packit 58578d
#ifndef BOOST_MPL_PRINT_HPP_INCLUDED
Packit 58578d
#define BOOST_MPL_PRINT_HPP_INCLUDED
Packit 58578d
Packit 58578d
// Copyright David Abrahams 2003
Packit 58578d
// Copyright Aleksey Gurtovoy 2004
Packit 58578d
//
Packit 58578d
// Distributed under the Boost Software License, Version 1.0. 
Packit 58578d
// (See accompanying file LICENSE_1_0.txt or copy at 
Packit 58578d
// http://www.boost.org/LICENSE_1_0.txt)
Packit 58578d
//
Packit 58578d
// See http://www.boost.org/libs/mpl for documentation.
Packit 58578d
Packit 58578d
// $Id$
Packit 58578d
// $Date$
Packit 58578d
// $Revision$
Packit 58578d
Packit 58578d
#include <boost/mpl/aux_/config/msvc.hpp>
Packit 58578d
#include <boost/mpl/identity.hpp>
Packit 58578d
Packit 58578d
namespace boost { namespace mpl {
Packit 58578d
  
Packit 58578d
namespace aux {
Packit 58578d
#if defined(BOOST_MSVC)
Packit 58578d
# pragma warning(push, 3)
Packit 58578d
// we only want one warning from MSVC, so turn off the other one
Packit 58578d
# pragma warning(disable: 4307)
Packit 58578d
#elif defined(__MWERKS__)
Packit 58578d
# pragma warn_hidevirtual on
Packit 58578d
   struct print_base { virtual void f() {} };
Packit 58578d
#endif
Packit 58578d
Packit 58578d
#if defined(__EDG_VERSION__)
Packit 58578d
  template <class T>
Packit 58578d
  struct dependent_unsigned
Packit 58578d
  {
Packit 58578d
      static const unsigned value = 1;
Packit 58578d
  };
Packit 58578d
#endif
Packit 58578d
} // namespace aux
Packit 58578d
Packit 58578d
template <class T>
Packit 58578d
struct print
Packit 58578d
    : mpl::identity<T>
Packit 58578d
#if defined(__MWERKS__)
Packit 58578d
    , aux::print_base
Packit 58578d
#endif 
Packit 58578d
{
Packit 58578d
#if defined(__clang__)
Packit 58578d
# pragma clang diagnostic push
Packit 58578d
# pragma clang diagnostic ignored "-Wc++11-extensions"
Packit 58578d
    const int m_x = 1 / (sizeof(T) - sizeof(T));
Packit 58578d
# pragma clang diagnostic pop
Packit 58578d
#elif defined(BOOST_MSVC)
Packit 58578d
    enum { n = sizeof(T) + -1 };
Packit 58578d
#elif defined(__MWERKS__)
Packit 58578d
    void f(int);
Packit 22d41c
#elif defined(__EDG_VERSION__)
Packit 22d41c
    enum { n = aux::dependent_unsigned<T>::value > -1 };
Packit 22d41c
#elif defined(BOOST_GCC)
Packit 22d41c
    enum { n1 };
Packit 22d41c
    enum { n2 };
Packit 22d41c
    enum { n = n1 != n2 };
Packit 22d41c
#else
Packit 22d41c
    enum { n = sizeof(T) > -1 };
Packit 22d41c
#endif
Packit 58578d
};
Packit 58578d
Packit 58578d
#if defined(BOOST_MSVC)
Packit 58578d
# pragma warning(pop)
Packit 58578d
#elif defined(__MWERKS__)
Packit 58578d
# pragma warn_hidevirtual reset
Packit 58578d
#endif
Packit 58578d
Packit 58578d
}}
Packit 58578d
Packit 58578d
#endif // BOOST_MPL_PRINT_HPP_INCLUDED