Boost logo

Boost Users :

Subject: Re: [Boost-users] [Range] Extending the library for a base class and all its derived - enable_if
From: Neil Groves (neil_at_[hidden])
Date: 2014-04-23 11:28:42

On Wed, Apr 23, 2014 at 2:13 PM, Albert Yiamakis <vkicefire_at_[hidden]>wrote:

> Hello,
> I am looking to make a class, whose definition I cannot touch, model a
> Range concept. To that end I use method 2,
> However, I am unable to specialize the relevant metafunctions
> (range_const_iterator, range_mutable_iterator, range_iterator) since
> they do not have an additional template parameter that would permit me
> to employ enable_if.
Generally it isn't necessary to use enable_if to achieve this. There
support for MFC containers was added by using method 2 to non-intrusively
add support.

> I have found this impossible without touching either the class'
> definition or the metafunctions. Perhaps there is some other trick I am
> not aware of, in which case I would greatly appreciate hearing about it.
I'm not sure if there is something special about your use-case that stops
method 2 from working. Perhaps you could take a look at the MFC support in
Boost.Range to see if this helps you add support for your classes.

If you can provide some code that shows the classes you are trying to make
support ranges then I'd be happy to try and help.

> If such a trick does not exist, then should these metafunctions feature
> an additional template parameter? Given that this is one of the methods
> to extend the library, it would make sense that one wishes to do so on
> conditions that enable_if can check.
So far I have never needed an additional parameter. I suspect that we don't
need the additional parameter, but I'm willing to look at new use cases and
make appropriate changes if they are warranted.

> Albert

Neil Groves

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at