Index: boost/lambda/detail/operators.hpp =================================================================== --- boost/lambda/detail/operators.hpp (revision 50406) +++ boost/lambda/detail/operators.hpp (working copy) @@ -258,17 +258,17 @@ #error "Multiple defines of BOOST_LAMBDA_PTR_ARITHMETIC_E1" #endif -#define BOOST_LAMBDA_PTR_ARITHMETIC_E1(OPER_NAME, ACTION, CONSTB) \ +#define BOOST_LAMBDA_PTR_ARITHMETIC_E1(OPER_NAME, ACTION, CONSTB) \ template \ inline const \ lambda_functor< \ - lambda_functor_base, CONSTB(&)[N]> > \ + lambda_functor_base, CONSTB(&)[N]> > \ > \ -OPER_NAME (const lambda_functor& a, CONSTB(&b)[N]) \ +OPER_NAME (const lambda_functor& a, CONSTB(&b)[N]) \ { \ - return lambda_functor< \ - lambda_functor_base, CONSTB(&)[N]> > \ - >(tuple, CONSTB(&)[N]>(a, b)); \ + return \ + lambda_functor_base, CONSTB(&)[N]> > \ + (tuple, CONSTB(&)[N]>(a, b)); \ } @@ -276,15 +276,15 @@ #error "Multiple defines of BOOST_LAMBDA_PTR_ARITHMETIC_E2" #endif -#define BOOST_LAMBDA_PTR_ARITHMETIC_E2(OPER_NAME, ACTION, CONSTA) \ -template \ -inline const \ -lambda_functor< \ +#define BOOST_LAMBDA_PTR_ARITHMETIC_E2(OPER_NAME, ACTION, CONSTA) \ +template \ +inline const \ +lambda_functor< \ lambda_functor_base > > \ -> \ +> \ OPER_NAME (CONSTA(&a)[N], const lambda_functor& b) \ -{ \ - return \ +{ \ + return \ lambda_functor_base > > \ (tuple >(a, b)); \ } Index: boost/lambda/detail/operator_return_type_traits.hpp =================================================================== --- boost/lambda/detail/operator_return_type_traits.hpp (revision 50406) +++ boost/lambda/detail/operator_return_type_traits.hpp (working copy) @@ -933,7 +933,42 @@ typedef typename std::basic_string::const_reference type; }; +template +struct plain_return_type_2, + std::basic_string, + std::basic_string > { + typedef std::basic_string type; +}; +template +struct plain_return_type_2, + const char*, + std::basic_string > { + typedef std::basic_string type; +}; + +template +struct plain_return_type_2, + std::basic_string, + const char*> { + typedef std::basic_string type; +}; + +template +struct plain_return_type_2, + char[N], + std::basic_string > { + typedef std::basic_string type; +}; + +template +struct plain_return_type_2, + std::basic_string, + char[N]> { + typedef std::basic_string type; +}; + + } // namespace lambda } // namespace boost