--- /dev/null
+--- a/boost/concept_check.hpp
++++ b/boost/concept_check.hpp
+@@ -136,20 +136,21 @@ namespace boost
+ {
+ BOOST_CONCEPT_USAGE(Assignable) {
+ #if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+- a = a; // require assignment operator
++ a = b; // require assignment operator
+ #endif
+- const_constraints(a);
++ const_constraints(b);
+ }
+ private:
+- void const_constraints(const TT& b) {
++ void const_constraints(const TT& x) {
+ #if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+- a = b; // const required for argument to assignment
++ a = x; // const required for argument to assignment
+ #else
+- ignore_unused_variable_warning(b);
++ ignore_unused_variable_warning(x);
+ #endif
+ }
+ private:
+ TT a;
++ TT b;
+ };
+
+
+@@ -180,22 +181,23 @@ namespace boost
+ BOOST_concept(SGIAssignable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(SGIAssignable) {
+- TT b(a);
++ TT c(a);
+ #if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+- a = a; // require assignment operator
++ a = b; // require assignment operator
+ #endif
+- const_constraints(a);
+- ignore_unused_variable_warning(b);
++ const_constraints(b);
++ ignore_unused_variable_warning(c);
+ }
+ private:
+- void const_constraints(const TT& b) {
+- TT c(b);
++ void const_constraints(const TT& x) {
++ TT c(x);
+ #if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+- a = b; // const required for argument to assignment
++ a = x; // const required for argument to assignment
+ #endif
+ ignore_unused_variable_warning(c);
+ }
+ TT a;
++ TT b;
+ };
+ #if (defined _MSC_VER)
+ # pragma warning( pop )
+