<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
On 3/9/2016 4:47 PM, Eric Fiselier wrote:<br>
<blockquote
cite="mid:CAB=TDAVbJazRL2sviW_dJVryqu94JV11ecPwtYjw09KwqqpRwg@mail.gmail.com"
type="cite">
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Wed, Mar 9, 2016 at 3:20 PM,
Craig, Ben via cfe-dev <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a></a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> From the C++14
spec...<br>
<br>
<blockquote>17.6.5.2 Headers [res.on.headers]<br>
1 A C++ header may include other C++ headers. A C++
header shall provide the declarations and definitions<br>
that appear in its synopsis. A C++ header shown in its
synopsis as including other C++ headers shall provide<br>
the declarations and definitions that appear in the
synopses of those other headers.<br>
</blockquote>
<br>
I'm not 100% sure I know what this means. If a header
(say... <system_error>) mentions a class (like
std::string), is it required to provide the full
definition for std::string, or is the forward declared
template good enough? </div>
</blockquote>
<div><br>
</div>
<div>According to the standard <system_header> does
not need <string> even though the synopsis mentions
it. A forward declaration is good enough.</div>
<div>Although <system_header> mentions string, the
synopsis for that header doesn't declare or define
std::string so [res.on.headers] doesn't apply.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">Right now, libcxx
uses the forward declaration. What about entities that
have specializations scattered all over the place, like
std::hash? Is the unspecialized forward declaration
good enough, or does the full bulk of all the std::hash
specializations have to come along too?<span
class="HOEnZb"><font color="#888888"><br>
<br>
<br>
</font></span></div>
</blockquote>
<div><br>
</div>
<div>I don't think all of the specialization need to come
along. I'm not sure what the QoI implications are though.
Could you provide some motivation as to why you asked this
question? <br>
</div>
</div>
</div>
</div>
</blockquote>
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>.<br>
<br>
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.<br>
<br>
<blockquote
cite="mid:CAB=TDAVbJazRL2sviW_dJVryqu94JV11ecPwtYjw09KwqqpRwg@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"><span class="HOEnZb"><font
color="#888888">
<pre cols="72">--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
</pre>
</font></span></div>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a moz-do-not-send="true"
href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
</pre>
</body>
</html>