[cfe-dev] [libcxx] Which headers must include other headers?
Craig, Ben via cfe-dev
cfe-dev at lists.llvm.org
Thu Mar 10 07:39:53 PST 2016
On 3/10/2016 9:34 AM, Howard Hinnant wrote:
> On Mar 10, 2016, at 9:02 AM, Craig, Ben via cfe-dev <cfe-dev at lists.llvm.org> wrote:
>> My motivation is that I'm running a conformance test suite on my platform (Hexagon + libcxx + libcxxabi + modified Dinkumware C library). For the portion covering <system_error>, I get a lot of failures because the test suite tries to use / instantiate std::string, and it believes that it should be able to get the template definition transitively through <system_error>.
>> I like the compile time benefits of a forward string declaration, I just want to be sure it's conformant. If not, I'm fine reporting the test as faulty.
> This is a minor test suite bug. <system_error> is not required to include <string>.
> There are a few instances where the standard does require one header to include another. For example <utility> is required to include <initiailizer_list>. When this is so, the synopsis of one header will have the required #include of the other header (in the standard).
Funny you should mention <utility> including <initializer_list>, because
libcxx currently doesn't do that :). The test suite caught that one as
well, but [res.on.headers] seems much more clear cut about that one. I
plan on fixing that, but I'm still in the triage and categorization
phases of running the test suite.
> There are a few places in the standard that appear to have a circular dependency among the headers. Care must be taken in the implementation to not actually create a circular dependency.
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
More information about the cfe-dev