
Hi there,
I use the GIL extension: HSL. I need to make conversions from hsl to other colorspaces. So I define generic default conversion using intermediate rgb colorspace. I define 2 templates: * default_color_convert<C1,hsl_t> * default_color_convert<hsl_t,C2>
But it creates an ambiguity with rgba_t, because it defines the same thing for rgba_t: * default_color_convert<C1,rgba_t> * default_color_convert<rgba_t,C2>
So default_color_convert<hsl_t,rgba_t> is ambiguous.
I cannot recreate your problem. Here is a little test app that works fine on my machine ( VC10 ): #include <boost\gil\gil_all.hpp> #include <boost\gil\extension\toolbox\hsl.hpp> namespace boost { namespace gil { template <> struct default_color_converter_impl< rgba_t, hsl_t > { template <typename P1, typename P2> void operator()( const P1& src, P2& dst ) const { using namespace hsl_color_space; int i = 9; // call default_color_converter_impl< rgb_t, hsl_t > eventually } }; template <> struct default_color_converter_impl<hsl_t,rgba_t> { template <typename P1, typename P2> void operator()( const P1& src, P2& dst) const { using namespace hsl_color_space; int i = 9; // call default_color_converter_impl< hsl_t, rgb_t > eventually } }; } // namespace gil } // namespace boost using namespace std; using namespace boost; using namespace gil; int _tmain(int argc, _TCHAR* argv[]) { rgba8_pixel_t p( 128, 0, 128, 255 ); hsl32f_pixel_t h; color_convert( p, h ); color_convert( h, p ); return 0; } You don't even need to specify the total specification. The current implementation would multiply the alpha factor to all rgb channels and then call rgb -> hsl converter. Do you have a different algorithm to create a hsl pixel? I haven't tried cmyk. Regards, Christian