summaryrefslogtreecommitdiff
path: root/boost/proto/operators.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/proto/operators.hpp')
-rw-r--r--boost/proto/operators.hpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/boost/proto/operators.hpp b/boost/proto/operators.hpp
index 540e85f637..1f2bad8c2b 100644
--- a/boost/proto/operators.hpp
+++ b/boost/proto/operators.hpp
@@ -21,6 +21,11 @@
#include <boost/proto/generate.hpp>
#include <boost/proto/make_expr.hpp>
+#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
{
namespace detail
@@ -100,7 +105,7 @@ namespace boost { namespace proto
#define BOOST_PROTO_DEFINE_UNARY_OPERATOR(OP, TAG, TRAIT, DOMAIN, POST) \
template<typename Arg> \
- BOOST_FORCEINLINE \
+ BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \
typename boost::proto::detail::enable_unary< \
DOMAIN \
, DOMAIN::proto_grammar \
@@ -114,7 +119,7 @@ namespace boost { namespace proto
} \
\
template<typename Arg> \
- BOOST_FORCEINLINE \
+ BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \
typename boost::proto::detail::enable_unary< \
DOMAIN \
, DOMAIN::proto_grammar \
@@ -130,7 +135,7 @@ namespace boost { namespace proto
#define BOOST_PROTO_DEFINE_BINARY_OPERATOR(OP, TAG, TRAIT, DOMAIN) \
template<typename Left, typename Right> \
- BOOST_FORCEINLINE \
+ BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \
typename boost::proto::detail::enable_binary< \
DOMAIN \
, DOMAIN::proto_grammar \
@@ -145,7 +150,7 @@ namespace boost { namespace proto
} \
\
template<typename Left, typename Right> \
- BOOST_FORCEINLINE \
+ BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \
typename boost::proto::detail::enable_binary< \
DOMAIN \
, DOMAIN::proto_grammar \
@@ -160,7 +165,7 @@ namespace boost { namespace proto
} \
\
template<typename Left, typename Right> \
- BOOST_FORCEINLINE \
+ BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \
typename boost::proto::detail::enable_binary< \
DOMAIN \
, DOMAIN::proto_grammar \
@@ -175,7 +180,7 @@ namespace boost { namespace proto
} \
\
template<typename Left, typename Right> \
- BOOST_FORCEINLINE \
+ BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \
typename boost::proto::detail::enable_binary< \
DOMAIN \
, DOMAIN::proto_grammar \
@@ -194,7 +199,7 @@ namespace boost { namespace proto
#define BOOST_PROTO_DEFINE_UNARY_OPERATOR(OP, TAG, TRAIT, DOMAIN, POST) \
template<typename Arg> \
- BOOST_FORCEINLINE \
+ BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \
typename boost::proto::detail::enable_unary< \
DOMAIN \
, DOMAIN::proto_grammar \
@@ -210,7 +215,7 @@ namespace boost { namespace proto
#define BOOST_PROTO_DEFINE_BINARY_OPERATOR(OP, TAG, TRAIT, DOMAIN) \
template<typename Left, typename Right> \
- BOOST_FORCEINLINE \
+ BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \
typename boost::proto::detail::enable_binary< \
DOMAIN \
, DOMAIN::proto_grammar \
@@ -366,4 +371,8 @@ namespace boost { namespace proto
}}
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma warning(pop)
+#endif
+
#endif