<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 937: Atomics for standard typedef types</title>
<meta property="og:title" content="Issue 937: Atomics for standard typedef types">
<meta property="og:description" content="C++ library issue. Status: NAD Editorial">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue937.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#NAD_Editorial">NAD Editorial</a> status.</em></p>
<h3 id="937"><a href="lwg-closed.html#937">937</a>. Atomics for standard typedef types</h3>
<p><b>Section:</b> 32.5 <a href="https://wg21.link/atomics">[atomics]</a> <b>Status:</b> <a href="lwg-active.html#NAD_Editorial">NAD Editorial</a>
 <b>Submitter:</b> Clark Nelson <b>Opened:</b> 2008-12-05 <b>Last modified:</b> 2016-01-28</p>
<p><b>Priority: </b>Not Prioritized
</p>
<p><b>View all other</b> <a href="lwg-index.html#atomics">issues</a> in [atomics].</p>
<p><b>View all issues with</b> <a href="lwg-status.html#NAD Editorial">NAD Editorial</a> status.</p>
<p><b>Discussion:</b></p>

<p><b>Addresses US 89</b></p>

<blockquote>
<p>
The types in the table "Atomics for standard typedef types" should be
typedefs, not classes. These semantics are necessary for compatibility
with C.
</p>

<p>
Change the classes to typedefs.
</p>
</blockquote>

<p>
<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html">N2427</a>
specified different requirements for atomic analogs of fundamental
integer types (such as <code>atomic_int</code>) and for atomic analogs of <code>&lt;cstdint&gt;</code>
typedefs (such as <code>atomic_size_t</code>). Specifically, <code>atomic_int</code> et al. were
specified to be distinct classes, whereas <code>atomic_size_t</code> et al. were
specified to be typedefs. Unfortunately, in applying
<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html">N2427</a>
to the WD, that distinction was erased, and the atomic analog of every <code>&lt;cstdint&gt;</code>
typedef is required to be a distinct class.
</p>

<p>
It shouldn't be required that the atomic analog of every <code>&lt;cstdint&gt;</code>
typedef be a typedef for some fundamental integer type. After all,
<code>&lt;cstdint&gt;</code> is supposed to provide standard names for extended integer
types. So there was a problem in
<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html">N2427</a>,
which certainly could have been
interpreted to require that. But the status quo in the WD is even worse,
because it's unambiguously wrong.
</p>

<p>
What is needed are words to require the existence of a bunch of type
names, without specifying whether they are class names or typedef names.
</p>

<p><i>[
Summit:
]</i></p>


<blockquote>
<p>
Change status to NAD, editorial. See US 89 comment notes above.
</p>
<p>
Direct the editor to turn the types into typedefs as proposed in the
comment. Paper approved by committee used typedefs, this appears to have
been introduced as an editorial change. Rationale: for compatibility
with C.
</p>
</blockquote>


<p id="res-937"><b>Proposed resolution:</b></p>
<p>
</p>





</body>
</html>
