
Eloi, this would be my solution. Wording might be a little off but I'm sure you'll get the idea: #include <boost\gil\gil_all.hpp> using namespace std; using namespace boost; using namespace gil; template< typename Data, int N > struct black_pixel_factory { BOOST_STATIC_ASSERT(( false )); }; template< typename Data > struct black_pixel_factory< Data, 1 > { typedef pixel< Data, devicen_layout_t< 1 > > pixel_t; static const pixel_t black() { return pixel_t( 0 ); } }; template< typename Data > struct black_pixel_factory< Data, 2 > { typedef pixel< Data, devicen_layout_t< 2 > > pixel_t; static const pixel_t black() { return pixel_t( 0, 0 ); } }; template< typename Data > struct black_pixel_factory< Data, 3 > { typedef pixel< Data, devicen_layout_t< 3 > > pixel_t; static const pixel_t black() { return pixel_t( 0, 0, 0 ); } }; template< typename Data > struct black_pixel_factory< Data, 4 > { typedef pixel< Data, devicen_layout_t< 4 > > pixel_t; static const pixel_t black() { return pixel_t( 0, 0, 0, 0 ); } }; template< typename Data > struct black_pixel_factory< Data, 5 > { typedef pixel< Data, devicen_layout_t< 5 > > pixel_t; static const pixel_t black() { return pixel_t( 0, 0, 0, 0, 0 ); } }; template< typename View > void foo( const View& dst ) { typedef pixel<bits32f, devicen_layout_t< num_channels<View>::value
comp_pixel_t; typedef image<comp_pixel_t, false, std::allocator<unsigned char> > comp_image_t; typedef typename view_type_from_pixel<comp_pixel_t>::type comp_view_t; typedef typename comp_view_t::x_iterator tmp_iterator;
typedef black_pixel_factory< bits32f, num_channels<View>::value > black_pixel_factory_t; typename black_pixel_factory_t::pixel_t black = black_pixel_factory_t::black(); comp_image_t itmp( dst.dimensions( ) ); comp_view_t tmpv( view( itmp ) ); fill_pixels( tmpv, black); return; } int main() { rgb32f_image_t img; foo( view( img )); return 0; } Christian