<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 3148: &lt;concepts&gt; should be freestanding</title>
<meta property="og:title" content="Issue 3148: &lt;concepts&gt; should be freestanding">
<meta property="og:description" content="C++ library issue. Status: C++20">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue3148.html">
<meta property="og:type" content="website">
<meta property="og:image" content="http://cplusplus.github.io/LWG/images/cpp_logo.png">
<meta property="og:image:alt" content="C++ logo">
<style>
  p {text-align:justify}
  li {text-align:justify}
  pre code.backtick::before { content: "`" }
  pre code.backtick::after { content: "`" }
  blockquote.note
  {
    background-color:#E0E0E0;
    padding-left: 15px;
    padding-right: 15px;
    padding-top: 1px;
    padding-bottom: 1px;
  }
  ins {background-color:#A0FFA0}
  del {background-color:#FFA0A0}
  table.issues-index { border: 1px solid; border-collapse: collapse; }
  table.issues-index th { text-align: center; padding: 4px; border: 1px solid; }
  table.issues-index td { padding: 4px; border: 1px solid; }
  table.issues-index td:nth-child(1) { text-align: right; }
  table.issues-index td:nth-child(2) { text-align: left; }
  table.issues-index td:nth-child(3) { text-align: left; }
  table.issues-index td:nth-child(4) { text-align: left; }
  table.issues-index td:nth-child(5) { text-align: center; }
  table.issues-index td:nth-child(6) { text-align: center; }
  table.issues-index td:nth-child(7) { text-align: left; }
  table.issues-index td:nth-child(5) span.no-pr { color: red; }
  @media (prefers-color-scheme: dark) {
     html {
        color: #ddd;
        background-color: black;
     }
     ins {
        background-color: #225522
     }
     del {
        background-color: #662222
     }
     a {
        color: #6af
     }
     a:visited {
        color: #6af
     }
     blockquote.note
     {
        background-color: rgba(255, 255, 255, .10)
     }
  }
</style>
</head>
<body>
<hr>
<p><em>This page is a snapshot from the LWG issues list, see the <a href="lwg-active.html">Library Active Issues List</a> for more information and the meaning of <a href="lwg-active.html#C++20">C++20</a> status.</em></p>
<h3 id="3148"><a href="lwg-defects.html#3148">3148</a>. <code>&lt;concepts&gt;</code> should be freestanding</h3>
<p><b>Section:</b> 16.4.2.5 <a href="https://wg21.link/compliance">[compliance]</a> <b>Status:</b> <a href="lwg-active.html#C++20">C++20</a>
 <b>Submitter:</b> Casey Carter <b>Opened:</b> 2018-08-09 <b>Last modified:</b> 2021-02-25</p>
<p><b>Priority: </b>0
</p>
<p><b>View all other</b> <a href="lwg-index.html#compliance">issues</a> in [compliance].</p>
<p><b>View all issues with</b> <a href="lwg-status.html#C++20">C++20</a> status.</p>
<p><b>Discussion:</b></p>
<p>
The design intent of the <code>&lt;concepts&gt;</code> header is that it contains
only fundamental concept definitions and implementations of customization points
that are used by those concept definitions. There should never be components in
the header that require operating system support. Consequently, freestanding
implementations can and should provide it. It is an oversight on the
part of LWG - and in particular the author of <a href="https://wg21.link/p0898r3">
P0898R3 "Standard Libary Concepts"</a> - that the <code>&lt;concepts&gt;</code>
header is not required to be provided by freestanding implementations.
</p>

<p><i>[2018-08 Batavia Monday issue prioritization]</i></p>

<p>Priority set to 0, status to 'Tentatively Ready'</p>
<p><i>[2018-11, Adopted in San Diego]</i></p>



<p id="res-3148"><b>Proposed resolution:</b></p>
<p>This wording is relative to <a href="https://wg21.link/n4762">N4762</a>.</p>

<ol>
<li><p>In 16.4.2.5 <a href="https://wg21.link/compliance">[compliance]</a>, add a new row to
<a href="https://wg21.link/tab:cpp.headers.freestanding">Table 21</a>:</p>

<blockquote>
<table style="border: 1px solid black">
<caption>Table 21 &mdash; C++ headers for freestanding implementations</caption>
<thead>
<tr style="border: 1px solid black">
<th colspan="2" style="text-align: center">Subclause</th><th style="text-align: center">Header(s)</th>
</tr>
</thead>
<tbody>
<tr style="border: 1px solid black">
<td style="padding: 0ex 1ex 0ex 1ex">[&hellip;]</td>
<td style="padding: 0ex 1ex 0ex 1ex">[&hellip;]</td>
<td style="padding: 0ex 1ex 0ex 1ex">[&hellip;]</td>
</tr>
<tr style="border: 1px solid black">
<td style="padding: 0ex 1ex 0ex 1ex">17.14 <a href="https://wg21.link/support.runtime">[support.runtime]</a></td>
<td style="padding: 0ex 1ex 0ex 1ex">Other runtime support</td>
<td style="padding: 0ex 1ex 0ex 1ex"><code>&lt;cstdarg&gt;</code></td>
</tr>
<tr style="border: 1px solid black">
<td style="padding: 0ex 1ex 0ex 1ex"><ins>18 <a href="https://wg21.link/concepts">[concepts]</a></ins></td>
<td style="padding: 0ex 1ex 0ex 1ex"><ins>Concepts library</ins></td>
<td style="padding: 0ex 1ex 0ex 1ex"><ins><code>&lt;concepts&gt;</code></ins></td>
</tr>
<tr style="border: 1px solid black">
<td style="padding: 0ex 1ex 0ex 1ex">21 <a href="https://wg21.link/meta">[meta]</a></td>
<td style="padding: 0ex 1ex 0ex 1ex">Type traits</td>
<td style="padding: 0ex 1ex 0ex 1ex"><code>&lt;type_traits&gt;</code></td>
</tr>
<tr style="border: 1px solid black">
<td style="padding: 0ex 1ex 0ex 1ex">[&hellip;]</td>
<td style="padding: 0ex 1ex 0ex 1ex">[&hellip;]</td>
<td style="padding: 0ex 1ex 0ex 1ex">[&hellip;]</td>
</tr>
</tbody>
</table>

</blockquote>
</li>
</ol>





</body>
</html>
