
On Mon, Aug 16, 2010 at 12:32 PM, Christian Henning <chhenning@gmail.com> wrote:
It works for me now too. Any idea why that is?
Well, apparently the reference type is declared as const somewhere in the GIL code (not the referenced pixel, of course). I tried to find exactly where the const was added in the code, but I had some trouble following all the many metafunction instantiations, etc -- there are quite a few for the declaration given. I did modify the metafunction slightly to give correct results regardless of const (and volatile) qualifiers. Perhaps it would be of use to you: //In addition to previous includes #include <boost/type_traits/remove_cv.hpp> namespace boost { namespace gil { template< typename T > struct bit_field_type_impl { typedef T type; }; template< typename BitField, typename ChannelBitSizes, typename Layout, bool IsMutable > struct bit_field_type_impl< bit_aligned_pixel_reference< BitField , ChannelBitSizes , Layout , IsMutable > > { typedef BitField type; }; template< typename T > struct bit_field_type : bit_field_type_impl<typename boost::remove_cv<T>::type > {}; } // namespace gil } // namespace boost Thanks, Nate