Index: boost/gil/gil_concept.hpp =================================================================== --- boost/gil/gil_concept.hpp (revision 81326) +++ boost/gil/gil_concept.hpp (working copy) @@ -254,6 +254,10 @@ // accessor/modifier of the value of each axis. template const typename axis::type& T::axis_value() const; template typename axis::type& T::axis_value(); + + // subscript operator support for getting an lvalue reference to the appropriate axis + value_type& T::operator[](size_t) const; + value_type& T::operator[](size_t); }; \endcode */ @@ -272,8 +276,10 @@ LT lt=axis_value(point); axis_value(point)=lt; - value_type v=point[0]; ignore_unused_variable_warning(v); - point[0]=point[0]; + value_type v=point[0]; + point[0]=v; + const P& p=point; + p[0]=v; } P point; }; @@ -456,11 +462,12 @@ template struct ChannelIsMutableConcept { void constraints() { - c=c; + c1=c2; using std::swap; - swap(c,c); + swap(c1,c2); } - T c; + T c1; + T c2; }; } @@ -951,9 +958,10 @@ void constraints() { gil_function_requires >(); gil_function_requires >(); - p[0]=p[0]; + p[0]=v; } P p; + typename P::template element_type

::type v; }; /// \brief Pixel concept that is a Regular type Index: libs/gil/test/pixel_iterator.cpp =================================================================== --- libs/gil/test/pixel_iterator.cpp (revision 81326) +++ libs/gil/test/pixel_iterator.cpp (working copy) @@ -147,14 +147,14 @@ unsigned char v8 = get_color( p8, gray_color_t() ); // all values should be 110b ( 6 ); - //assert( v1 == 6 ); - //assert( v2 == 6 ); - //assert( v3 == 6 ); - //assert( v4 == 6 ); - //assert( v5 == 6 ); - //assert( v6 == 6 ); - //assert( v7 == 6 ); - //assert( v8 == 6 ); + assert( v1 == 6 ); + assert( v2 == 6 ); + assert( v3 == 6 ); + assert( v4 == 6 ); + assert( v5 == 6 ); + assert( v6 == 6 ); + assert( v7 == 6 ); + assert( v8 == 6 ); } // TODO: Make better tests. Use some code from below.