diff options
Diffstat (limited to 'boost/proto/extends.hpp')
-rw-r--r-- | boost/proto/extends.hpp | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/boost/proto/extends.hpp b/boost/proto/extends.hpp index 7d5678a80d..3a8151964c 100644 --- a/boost/proto/extends.hpp +++ b/boost/proto/extends.hpp @@ -34,10 +34,9 @@ #include <boost/proto/generate.hpp> #include <boost/proto/detail/remove_typename.hpp> -#ifdef _MSC_VER -#define BOOST_PROTO_DISABLE_MSVC_C4522 __pragma(warning(disable: 4522)) -#else -#define BOOST_PROTO_DISABLE_MSVC_C4522 +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma warning(push) +# pragma warning(disable : 4714) // function 'xxx' marked as __forceinline not inlined #endif namespace boost { namespace proto @@ -75,7 +74,7 @@ namespace boost { namespace proto /// #define BOOST_PROTO_DEFINE_FUN_OP_IMPL_(Z, N, DATA, Const) \ BOOST_PP_IF(N, BOOST_PROTO_TEMPLATE_YES_, BOOST_PROTO_TEMPLATE_NO_)(Z, N) \ - BOOST_FORCEINLINE \ + BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \ typename BOOST_PROTO_RESULT_OF< \ proto_generator( \ typename boost::proto::result_of::BOOST_PP_CAT(funop, N)< \ @@ -105,7 +104,7 @@ namespace boost { namespace proto /// #define BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(Const) \ template<typename... A> \ - BOOST_FORCEINLINE \ + BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \ typename BOOST_PROTO_RESULT_OF< \ proto_generator( \ typename boost::proto::result_of::funop< \ @@ -176,26 +175,26 @@ namespace boost { namespace proto typedef boost::proto::tag::proto_expr fusion_tag; \ BOOST_PP_REPEAT(BOOST_PROTO_MAX_ARITY, BOOST_PROTO_EXTENDS_CHILD, ~) \ \ - BOOST_FORCEINLINE \ + BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \ static proto_derived_expr const make(Expr const &e) \ { \ proto_derived_expr that = {e}; \ return that; \ } \ \ - BOOST_FORCEINLINE \ + BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \ proto_base_expr &proto_base() \ { \ return this->proto_expr_.proto_base(); \ } \ \ - BOOST_FORCEINLINE \ + BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \ proto_base_expr const &proto_base() const \ { \ return this->proto_expr_.proto_base(); \ } \ \ - BOOST_FORCEINLINE \ + BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \ operator proto_address_of_hack_type_() const \ { \ return boost::addressof(this->proto_base().child0); \ @@ -209,7 +208,7 @@ namespace boost { namespace proto #define BOOST_PROTO_EXTENDS_COPY_ASSIGN_IMPL_(This, Const, Typename) \ BOOST_PROTO_DISABLE_MSVC_C4522 \ - BOOST_FORCEINLINE \ + BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \ Typename() BOOST_PROTO_RESULT_OF< \ Typename() This::proto_generator( \ Typename() boost::proto::base_expr< \ @@ -259,7 +258,7 @@ namespace boost { namespace proto /// #define BOOST_PROTO_EXTENDS_ASSIGN_IMPL_(ThisConst, ThatConst) \ template<typename A> \ - BOOST_FORCEINLINE \ + BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \ typename BOOST_PROTO_RESULT_OF< \ proto_generator( \ typename boost::proto::base_expr< \ @@ -326,7 +325,7 @@ namespace boost { namespace proto /// #define BOOST_PROTO_EXTENDS_SUBSCRIPT_IMPL_(ThisConst, ThatConst) \ template<typename A> \ - BOOST_FORCEINLINE \ + BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \ typename BOOST_PROTO_RESULT_OF< \ proto_generator( \ typename boost::proto::base_expr< \ @@ -641,4 +640,8 @@ namespace boost { namespace proto }} +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma warning(pop) +#endif + #endif |