
On 16 Feb 2011, at 12:52, Daniel James wrote:
On 16 February 2011 09:40, John Maddock <boost.regex@virgin.net> 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