Hi John, I have asked Lubomir about a year back about that "feature". He mentioned performance reasons, which I take is the right answer. I'm sure you know about it. But for the sake of introducing gil to the boost community, here is a little code. #include <boost/gil/gil_all.hpp> using namespace std; using namespace boost; using namespace gil; struct min_init_channel { template <typename Channel> void operator()(Channel& c) const { c = channel_traits< Channel >::min_value(); } }; template < typename Pixel > void min_init( Pixel& p ) { static_for_each( p, min_init_channel()); } int main(int argc, char* argv[]) { rgb8_pixel_t p; min_init( p ); assert( at_c<0>( p ) == 0 ); } Question, can I use BOOST_FOR_EACH to get rid of the function object? On the other hand there might be a case for having a boolean as a parameter to the pixel constructor determining if the channels should be initialized or not. Greetings, Christian