Hi there, I cannot understand why the code below gives me a static
assertion. As far as I know I use a very common technique to to
extract a type from templated class using specialization over this
class.
#include
#include
#include
namespace boost {
namespace gil {
template< typename T >
struct bit_field_type{ typedef T type; };
template< typename BitField,
typename ChannelBitSizes,
typename Layout,
bool IsMutable
>
struct bit_field_type< bit_aligned_pixel_reference< BitField
, ChannelBitSizes
, Layout
, IsMutable
>
>
{
typedef BitField type;
};
} // namespace gil
} // namespace boost
int main(int argc, char* argv[])
{
typedef boost::gil::bit_aligned_image1_type< 1,
boost::gil::gray_layout_t >::type gray1_image_t;
typedef gray1_image_t::view_t::reference ref;
typedef boost::gil::bit_field_type< ref >::type bit_field_t;
BOOST_STATIC_ASSERT(( boost::is_same< bit_field_t, unsigned char >::value ));
return 0;
}
The type for gray1_image_t::view_t::reference is the following:
boost::gil::bit_aligned_pixel_reference< unsigned char,
boost::mpl::vector1_c< unsigned int, 1 >
, boost::gil::layout< boost::mpl::vector1<
boost::gil::gray_color_t >, boost::mpl::range_c< int, 0, 1> >
, 1
>
Can somebody tell what wrong. I have been staring at this for too
long. I'm using MS Visual Studio 9 and 10.
Thanks in advance,
Christian