Boost logo

Boost :

Subject: Re: [boost] [c++1] BOOST_NOEXCEPT macros?
From: Beman Dawes (bdawes_at_[hidden])
Date: 2011-10-11 08:09:09


On Mon, Oct 10, 2011 at 11:59 PM, Robert Kawulak
<robert.kawulak_at_[hidden]> wrote:
>> From: Beman Dawes
>> > Then maybe at one go add BOOST_OVERRIDE and BOOST_FINAL? (note that
>> MSVC
>> > supports them since VS 2005 but uses sealed rather than final, making
>> the
>> > macros even more desirable for better portability).
>>
>> Care to submit patches?
>
> OK, but one thing is unclear to me. Along with BOOST_OVERRIDE and
> BOOST_FINAL, the corresponding BOOST_NO_<feature> macro(s) should be
> provided. There are several possibilities:
> - provide BOOST_NO_VIRT_SPECIFIERS,
> - provide BOOST_NO_OVERRIDE_FINAL (or
> BOOST_NO_OVERRIDE_FINAL_VIRT_SPECIFIERS),
> - provide BOOST_NO_OVERRIDE and BOOST_NO_FINAL (or
> BOOST_NO_OVERRIDE_VIRT_SPECIFIER and BOOST_NO_FINAL_VIRT_SPECIFIER).
>
> BOOST_NO_VIRT_SPECIFIERS has the problem that if a future C++ revision adds
> more specifiers (i.e., explicit/new) then the meaning will become ambiguous.
> BOOST_NO_OVERRIDE_FINAL is better in this respect, but it has another
> problem that applies to BOOST_NO_VIRT_SPECIFIERS as well: currently there
> are compilers (MSVC >= 8.0) supporting override but not final (they use
> sealed keyword instead). On the other hand, BOOST_NO_OVERRIDE and
> BOOST_NO_FINAL may be a bit too fine-grained. What do you and the others
> think?

There is another issue I should have mentioned earlier: Do these
features actually impact any Boost code? We don't want to waste
people's time working on config support that isn't going to be used.

To answer your question, BOOST_NO_OVERRIDE and BOOST_NO_FINAL may be
fine grained, but they make life easier if some compiler implements
one but not the other.

--Beman


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