Boost logo

Boost Users :

Subject: Re: [Boost-users] Problem with simple type extraction
From: Nathan Crookston (nathan.crookston_at_[hidden])
Date: 2010-08-16 15:15:26


On Mon, Aug 16, 2010 at 12:32 PM, Christian Henning <chhenning_at_[hidden]> 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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net