summaryrefslogtreecommitdiff
path: root/boost/proto/traits.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/proto/traits.hpp')
-rw-r--r--boost/proto/traits.hpp30
1 files changed, 11 insertions, 19 deletions
diff --git a/boost/proto/traits.hpp b/boost/proto/traits.hpp
index 05263b14d0..f1a83fca03 100644
--- a/boost/proto/traits.hpp
+++ b/boost/proto/traits.hpp
@@ -32,7 +32,7 @@
#include <boost/proto/domain.hpp>
#include <boost/proto/transform/pass_through.hpp>
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma warning(push)
# if BOOST_WORKAROUND( BOOST_MSVC, >= 1400 )
# pragma warning(disable: 4180) // warning C4180: qualifier applied to function type has no meaning; ignored
@@ -116,7 +116,7 @@ namespace boost { namespace proto
: mpl::false_
{};
- #if BOOST_WORKAROUND(__GNUC__, == 3) || (__GNUC__ == 4 && __GNUC_MINOR__ == 0)
+ #if BOOST_WORKAROUND(__GNUC__, == 3) || (BOOST_WORKAROUND(__GNUC__, == 4) && __GNUC_MINOR__ == 0)
// work around GCC bug
template<typename Tag, typename Args, long N>
struct is_callable<proto::expr<Tag, Args, N> >
@@ -398,11 +398,7 @@ namespace boost { namespace proto
/// \return \c e
/// \throw nothrow
BOOST_FORCEINLINE
- #ifdef BOOST_PROTO_STRICT_RESULT_OF
- result_type
- #else
- typename impl::expr_param
- #endif
+ BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, typename impl::expr_param)
operator ()(
typename impl::expr_param e
, typename impl::state_param
@@ -432,7 +428,7 @@ namespace boost { namespace proto
template<typename Expr, typename State, typename Data>
struct impl
- : detail::pass_through_impl<if_else_, Expr, State, Data>
+ : detail::pass_through_impl<if_else_, deduce_domain, Expr, State, Data>
{};
/// INTERNAL ONLY
@@ -469,11 +465,7 @@ namespace boost { namespace proto
/// \return \c e
/// \throw nothrow
BOOST_FORCEINLINE
- #ifdef BOOST_PROTO_STRICT_RESULT_OF
- result_type
- #else
- typename impl::expr_param
- #endif
+ BOOST_PROTO_RETURN_TYPE_STRICT_LOOSE(result_type, typename impl::expr_param)
operator ()(
typename impl::expr_param e
, typename impl::state_param
@@ -507,7 +499,7 @@ namespace boost { namespace proto
template<typename Expr, typename State, typename Data>
struct impl
- : detail::pass_through_impl<unary_expr, Expr, State, Data>
+ : detail::pass_through_impl<unary_expr, deduce_domain, Expr, State, Data>
{};
/// INTERNAL ONLY
@@ -533,7 +525,7 @@ namespace boost { namespace proto
template<typename Expr, typename State, typename Data>
struct impl
- : detail::pass_through_impl<binary_expr, Expr, State, Data>
+ : detail::pass_through_impl<binary_expr, deduce_domain, Expr, State, Data>
{};
/// INTERNAL ONLY
@@ -554,7 +546,7 @@ namespace boost { namespace proto
\
template<typename Expr, typename State, typename Data> \
struct impl \
- : detail::pass_through_impl<Op, Expr, State, Data> \
+ : detail::pass_through_impl<Op, deduce_domain, Expr, State, Data> \
{}; \
\
typedef proto::tag::Op proto_tag; \
@@ -572,7 +564,7 @@ namespace boost { namespace proto
\
template<typename Expr, typename State, typename Data> \
struct impl \
- : detail::pass_through_impl<Op, Expr, State, Data> \
+ : detail::pass_through_impl<Op, deduce_domain, Expr, State, Data> \
{}; \
\
typedef proto::tag::Op proto_tag; \
@@ -1145,7 +1137,7 @@ namespace boost { namespace proto
/// \brief Return the value stored within the specified Proto
/// terminal expression.
///
- /// Return the the value stored within the specified Proto
+ /// Return the value stored within the specified Proto
/// terminal expression. The value is returned by
/// reference.
///
@@ -1259,7 +1251,7 @@ namespace boost { namespace proto
}}
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma warning(pop)
#endif