<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body 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?  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?<br>
    <br>
    <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>