From 08b40af530f2a82b8b424c8a3c260e617ad08321 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sun, 5 Sep 2021 03:06:33 +0300 Subject: [PATCH] Fix stream detection in op<<, op>> --- include/boost/lambda2/lambda2.hpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/include/boost/lambda2/lambda2.hpp b/include/boost/lambda2/lambda2.hpp index d450d9b..673baab 100644 --- a/include/boost/lambda2/lambda2.hpp +++ b/include/boost/lambda2/lambda2.hpp @@ -152,6 +152,8 @@ template using enable_unary_lambda = template using enable_binary_lambda = std::enable_if_t::value || is_lambda_expression::value>; +template using is_stream = std::is_base_of>; + } // namespace lambda2_detail #define BOOST_LAMBDA2_UNARY_LAMBDA(op, fn) \ @@ -226,14 +228,14 @@ BOOST_LAMBDA2_BINARY_LAMBDA(>>=, lambda2_detail::right_shift_equal) // operator<< -template::value>, +template::value>, class B, class = lambda2_detail::enable_binary_lambda> auto operator<<( A&& a, B&& b ) { return std::bind( lambda2_detail::left_shift(), std::forward(a), std::forward(b) ); \ } -template::value>, +template::value>, class B, class = lambda2_detail::enable_unary_lambda> auto operator<<( A& a, B&& b ) { @@ -242,14 +244,14 @@ auto operator<<( A& a, B&& b ) // operator>> -template::value>, +template::value>, class B, class = lambda2_detail::enable_binary_lambda> auto operator>>( A&& a, B&& b ) { return std::bind( lambda2_detail::right_shift(), std::forward(a), std::forward(b) ); \ } -template::value>, +template::value>, class B, class = lambda2_detail::enable_unary_lambda> auto operator>>( A& a, B&& b ) {