Subject: Re: [boost] [config] request for BOOST_NO_FWD_STD_DECLARATION
From: Christopher Jefferson (chris_at_[hidden])
Date: 2011-02-16 08:13:29


On 16 Feb 2011, at 12:52, Daniel James wrote:

> On 16 February 2011 09:40, John Maddock <boost.regex_at_[hidden]> wrote:
>>> libc++ does not allow forward declarations of types for std:: , as it uses
>>> inline namespace to allow versioning.
>>>
>>> Forward declarations occur in many libraries (config, fusion,
>>> interprocess). In each case I would like to just include the actual headers.
>>>
>>> I could just #define all cases for LIBCPP, but other libraries might move
>>> to using inline namespaces in future, so I could introduce a macro?
>>
>> I think that sounds a reasonable addition, yes. Do you have patches?
>
> IMO it should be a macro that's defined when forward declaration is
> possible rather than when it isn't. That way the default would be the
> safer option. I now think it was a mistake to forward declare for
> unknown setups in 'container_fwd.hpp'.

I would be happy with that, except I note that (for example) boost fusion currently unconditionally forward declares std::pair, and every compiler in the regression test (except clang with libc++) passes the std_pair test. Therefore the macro would have to be added to every other compiler, else they would become less efficent.

Chris