$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r54355 - sandbox/itl/boost/itl
From: afojgo_at_[hidden]
Date: 2009-06-25 16:48:27
Author: jofaber
Date: 2009-06-25 16:48:26 EDT (Thu, 25 Jun 2009)
New Revision: 54355
URL: http://svn.boost.org/trac/boost/changeset/54355
Log:
Refactoring: Implemented all infix operators .o. using pass by value and RVO. Stable {msvc-9.0} 
Text files modified: 
   sandbox/itl/boost/itl/operators.hpp |    55 ++++++++++++++++------------------------
   1 files changed, 22 insertions(+), 33 deletions(-)
Modified: sandbox/itl/boost/itl/operators.hpp
==============================================================================
--- sandbox/itl/boost/itl/operators.hpp	(original)
+++ sandbox/itl/boost/itl/operators.hpp	2009-06-25 16:48:26 EDT (Thu, 25 Jun 2009)
@@ -40,10 +40,9 @@
 
 
 template<class ObjectT>
-ObjectT operator + (const typename ObjectT::overloadable_type& object, const ObjectT& operand)
+ObjectT operator + (typename ObjectT::overloadable_type object, const ObjectT& operand)
 {
-    ObjectT tmp(object);
-    return tmp += operand; 
+    return object += operand; 
 }
 
 
@@ -59,26 +58,23 @@
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_intra_combinable<ObjectT, OperandT>, ObjectT>::type
-operator | (const ObjectT& object, const OperandT& operand)
+operator | (ObjectT object, const OperandT& operand)
 {
-    ObjectT result(object); 
-    return result += operand; 
+    return object += operand; 
 }
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_intra_combinable<ObjectT, OperandT>, ObjectT>::type
-operator | (const OperandT& operand, const ObjectT& object)
+operator | (const OperandT& operand, ObjectT object)
 {
-    ObjectT result(object); 
-    return result += operand; 
+    return object += operand; 
 }
 
 
 template<class ObjectT>
-ObjectT operator | (const typename ObjectT::overloadable_type& object, const ObjectT& operand)
+ObjectT operator | (typename ObjectT::overloadable_type object, const ObjectT& operand)
 {
-    ObjectT result(object); 
-    return result += operand; 
+    return object += operand; 
 }
 
 
@@ -100,10 +96,9 @@
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_right_inter_combinable<ObjectT, OperandT>, ObjectT>::type
-operator - (const ObjectT& object, const OperandT& operand)
+operator - (ObjectT object, const OperandT& operand)
 {
-    ObjectT result(object); 
-    return result -= operand; 
+    return object -= operand; 
 }
 
 //------------------------------------------------------------------------------
@@ -121,25 +116,22 @@
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_inter_combinable<ObjectT, OperandT>, ObjectT>::type
-operator & (const ObjectT& object, const OperandT& operand)
+operator & (ObjectT object, const OperandT& operand)
 {
-    ObjectT result(object); 
-    return result &= operand; 
+    return object &= operand; 
 }
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_inter_combinable<ObjectT, OperandT>, ObjectT>::type
-operator & (const OperandT& operand, const ObjectT& object)
+operator & (const OperandT& operand, ObjectT object)
 {
-    ObjectT result(object); 
-    return result &= operand; 
+    return object &= operand; 
 }
 
 template<class ObjectT>
-ObjectT operator & (const typename ObjectT::overloadable_type& object, const ObjectT& operand)
+ObjectT operator & (typename ObjectT::overloadable_type object, const ObjectT& operand)
 {
-    ObjectT result(object); 
-    return result &= operand; 
+    return object &= operand; 
 }
 
 //------------------------------------------------------------------------------
@@ -154,26 +146,23 @@
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_intra_combinable<ObjectT, OperandT>, ObjectT>::type
-operator ^ (const ObjectT& object, const OperandT& operand)
+operator ^ (ObjectT object, const OperandT& operand)
 {
-    ObjectT result(object); 
-    return result ^= operand; 
+    return object ^= operand; 
 }
 
 template<class ObjectT, class OperandT>
 typename boost::enable_if<is_binary_intra_combinable<ObjectT, OperandT>, ObjectT>::type
-operator ^ (const OperandT& operand, const ObjectT& object)
+operator ^ (const OperandT& operand, ObjectT object)
 {
-    ObjectT result(object); 
-    return result ^= operand; 
+    return object ^= operand; 
 }
 
 
 template<class ObjectT>
-ObjectT operator ^ (const typename ObjectT::overloadable_type& object, const ObjectT& operand)
+ObjectT operator ^ (typename ObjectT::overloadable_type object, const ObjectT& operand)
 {
-    ObjectT result(object); 
-    return result ^= operand; 
+    return object ^= operand; 
 }