Boost logo

Boost :

From: Jaakko Jarvi (jajarvi_at_[hidden])
Date: 2003-08-20 14:57:23


Hi Boosters,

We submitted enable_if for formal review in July. The library does not
seem to be on the review queue, and maybe it is not worth a full
review. There was a kind of unofficial mini review after our
submission, which brought up a few issues:

1. Whether to make enable_if MPL-aware or not.

In the submitted version, the first parameter of the enable_if
template is boolean, whereas some Boosters wanted it to be a type
containing a boolean member constant named value. The latter
plays better with MPL, and in some cases can avoid
instantiating branches of conditional expressions (shortcircuiting).

Close to consensus was reached that both versions of enable_if should
be supported; naming was not decided on

Dave Abrahams's suggestion was to use the name enable_if for the
MPL-aware version, and enable_if_c for the version taking the boolean
template parameter.

We plan to adopt this naming convention.

2. Enable_if_lazy

Some comments were against the name enable_if_lazy.

We plan to change it to lazy_enable_if, particularly if the
enable_if and enable_if_c naming convention is approved.

3. disable_if

The submission included the disable_if template. The same
functionality can be achieved with enable_if by negating the
condition, and so someone asked it to be removed. On the other hand,
there was opposition to its removal. We plan to keep disable_if for
convenience.

4. Non-SFINAE compilers

Dave has an implementation of enable_if which defaults to being always
enabled for compilers that do not support SFINAE. We do not think this
is the right approach, and believe that attemts to use enable_if on a
compiler that does not support SFINAE, should cause an immediate
error.

5. Non-partial specialization compilers

Are there any compilers that support SFINAE but do not support partial
specialization?
If not, we plan to use partial specialization in our implementation.

Do other Boosters think an official review is necessary, or what will
the process be?

The submitted version is in the sandbox:

boost/utility
libs/utility

and in the Files section at YahooGroups. Note that none of the changes
discussed above are currently in the code.

  Cheers, Jaakko & Jeremiah


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk