45c45 < # pragma warning(disable: 4512) // assignment ² could not be generated --- > # pragma warning(disable: 4512) // assignment operator could not be generated 1171,1326d1170 < // operator+ < template < struct left_addition < { < left_addition (const R & value) : m_value (value) {} < < template V operator()(V const & v) const { return m_value + v; } < < private: < R m_value; < }; < < template < struct right_addition < { < right_addition (const R & value) : m_value (value) {} < < template V operator()(V const & v) const { return v+m_value; } < < private: < R m_value; < }; < < template < bind_t< R, left_addition, list1< bind_t > > < operator+ (R const & value, bind_t const & f) < { < typedef list1< bind_t > list_type; < return bind_t, list_type> (left_addition (value), list_type(f)); < } < < template < bind_t< R, right_addition, list1< bind_t > > < operator+ (bind_t const & f, R const & value) < { < typedef list1< bind_t > list_type; < return bind_t, list_type> (right_addition (value), list_type(f)); < } < < // operator- < template < struct left_substraction < { < left_substraction (const R & value) : m_value (value) {} < < template V operator()(V const & v) const { return m_value - v; } < < private: < R m_value; < }; < < template < struct right_substraction < { < right_substraction (const R & value) : m_value (value) {} < < template V operator()(V const & v) const { return v - m_value; } < < private: < R m_value; < }; < < template < bind_t< R, left_substraction, list1< bind_t > > < operator- (R const & value, bind_t const & f) < { < typedef list1< bind_t > list_type; < return bind_t, list_type> (left_substraction (value), list_type(f)); < } < < template < bind_t< R, right_substraction, list1< bind_t > > < operator- (bind_t const & f, R const & value) < { < typedef list1< bind_t > list_type; < return bind_t, list_type> (right_substraction (value), list_type(f)); < } < < // operator* < template < struct left_multiplication < { < left_multiplication (const R & value) : m_value (value) {} < < template V operator()(V const & v) const { return m_value * v; } < < private: < R m_value; < }; < < template < struct right_multiplication < { < right_multiplication (const R & value) : m_value (value) {} < < template V operator()(V const & v) const { return v * m_value; } < < private: < R m_value; < }; < < template < bind_t< R, left_multiplication, list1< bind_t > > < operator* (R const & value, bind_t const & f) < { < typedef list1< bind_t > list_type; < return bind_t, list_type> (left_multiplication (value), list_type(f)); < } < < template < bind_t< R, right_multiplication, list1< bind_t > > < operator* (bind_t const & f, R const & value) < { < typedef list1< bind_t > list_type; < return bind_t, list_type> (right_multiplication (value), list_type(f)); < } < < // operator/ < template < struct left_division < { < left_division (const R & value) : m_value (value) {} < < template V operator()(V const & v) const { return m_value / v; } < < private: < R m_value; < }; < < template < struct right_division < { < right_division (const R & value) : m_value (value) {} < < template V operator()(V const & v) const { return v / m_value; } < < private: < R m_value; < }; < < template < bind_t< R, left_division, list1< bind_t > > < operator/ (R const & value, bind_t const & f) < { < typedef list1< bind_t > list_type; < return bind_t, list_type> (left_division (value), list_type(f)); < } < < template < bind_t< R, right_division, list1< bind_t > > < operator/ (bind_t const & f, R const & value) < { < typedef list1< bind_t > list_type; < return bind_t, list_type> (right_division (value), list_type(f)); < } <