diff options
Diffstat (limited to 'boost/proto/proto_fwd.hpp')
-rw-r--r-- | boost/proto/proto_fwd.hpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/boost/proto/proto_fwd.hpp b/boost/proto/proto_fwd.hpp index 841cd752bb..6fb25bfcf5 100644 --- a/boost/proto/proto_fwd.hpp +++ b/boost/proto/proto_fwd.hpp @@ -92,6 +92,22 @@ # endif #endif +#ifndef BOOST_NO_DECLTYPE_N3276 +# // Proto can only use the decltype-based result_of if N3276 has been +# // implemented by the compiler. +# // See http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3276.pdf +# ifndef BOOST_PROTO_USE_NORMAL_RESULT_OF +# define BOOST_PROTO_USE_NORMAL_RESULT_OF +# endif +# // If we're using the decltype-based result_of, we need to be a bit +# // stricter about the return types of some functions. +# ifndef BOOST_PROTO_STRICT_RESULT_OF +# define BOOST_PROTO_STRICT_RESULT_OF +# endif +#endif + +// Unless compiler support is there, use tr1_result_of instead of +// result_of to avoid the problems addressed by N3276. #ifdef BOOST_PROTO_USE_NORMAL_RESULT_OF # define BOOST_PROTO_RESULT_OF boost::result_of #else @@ -102,6 +118,14 @@ # define BOOST_PROTO_EXTENDED_TEMPLATE_PARAMETERS_MATCHING #endif +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# define BOOST_PROTO_DISABLE_MSVC_C4522 __pragma(warning(disable : 4522)) // 'class' : multiple assignment operators specified +# define BOOST_PROTO_DISABLE_MSVC_C4714 __pragma(warning(disable : 4714)) // function 'xxx' marked as __forceinline not inlined +#else +# define BOOST_PROTO_DISABLE_MSVC_C4522 +# define BOOST_PROTO_DISABLE_MSVC_C4714 +#endif + namespace boost { namespace proto { namespace detail @@ -380,6 +404,8 @@ namespace boost { namespace proto template<typename Grammar> struct vararg; + struct pack; + // Boost bug https://svn.boost.org/trac/boost/ticket/4602 //int const N = INT_MAX; int const N = (INT_MAX >> 10); |