Ticket #4918: selfassign.patch

File selfassign.patch, 1.8 KB (added by gromer@…, 12 years ago)

Patch to fix bug

  • boost/concept_check.hpp

    a b namespace boost  
    136136  {
    137137    BOOST_CONCEPT_USAGE(Assignable) {
    138138#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
    139       a = a;             // require assignment operator
     139      a = b;             // require assignment operator
    140140#endif
    141       const_constraints(a);
     141      const_constraints(b);
    142142    }
    143143   private:
    144     void const_constraints(const TT& b) {
     144    void const_constraints(const TT& x) {
    145145#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
    146       a = b;              // const required for argument to assignment
     146      a = x;              // const required for argument to assignment
    147147#else
    148       ignore_unused_variable_warning(b);
     148      ignore_unused_variable_warning(x);
    149149#endif
    150150    }
    151151   private:
    152152    TT a;
     153    TT b;
    153154  };
    154155
    155156 
    namespace boost  
    180181  BOOST_concept(SGIAssignable,(TT))
    181182  {
    182183    BOOST_CONCEPT_USAGE(SGIAssignable) {
    183       TT b(a);
     184      TT c(a);
    184185#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
    185       a = a;              // require assignment operator
     186      a = b;              // require assignment operator
    186187#endif
    187       const_constraints(a);
    188       ignore_unused_variable_warning(b);
     188      const_constraints(b);
     189      ignore_unused_variable_warning(c);
    189190    }
    190191   private:
    191     void const_constraints(const TT& b) {
    192       TT c(b);
     192    void const_constraints(const TT& x) {
     193      TT c(x);
    193194#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
    194       a = b;              // const required for argument to assignment
     195      a = x;              // const required for argument to assignment
    195196#endif
    196197      ignore_unused_variable_warning(c);
    197198    }
    198199    TT a;
     200    TT b;
    199201  };
    200202#if (defined _MSC_VER)
    201203# pragma warning( pop )