Subject: Re: [boost] [config] request for BOOST_NO_FWD_STD_DECLARATION
From: Christopher Jefferson (chris_at_[hidden])
Date: 2011-02-16 07:52:35
On 16 Feb 2011, at 12:35, Mathias Gaunard wrote:
> On 15/02/2011 21:54, Christopher Jefferson wrote:
>> libc++ does not allow forward declarations of types for std:: , as it uses inline namespace to allow versioning.
> Is that legal?
I think so. I believe it is impossible to tell, except when trying to do forward declarations of C++ standard library types.
The question is then if forward declarations of types in std:: are allowed. From 126.96.36.199.1p1 in the current C++0x draft (there is identical text in the c++03 standard):
"The behavior of a C++ program is undefined if it adds declarations or definitions to namespace std or to a namespace within namespace std unless otherwise specified."
While people could read this in various ways, I would say it forbids these kinds of games, although they might work for particular standard libraries.