<!DOCTYPE html>
<html>
<head>
<!-- 2025-04-06 Sun 22:50 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>"RFC 3514: The Security Flag" for C++</title>
<meta name="author" content="Steve Downey" />
<meta name="generator" content="Org Mode" />
<style type="text/css">
  #content { max-width: 60em; margin: auto; }
  .title  { text-align: center;
             margin-bottom: .2em; }
  .subtitle { text-align: center;
              font-size: medium;
              font-weight: bold;
              margin-top:0; }
  .todo   { font-family: monospace; color: red; }
  .done   { font-family: monospace; color: green; }
  .priority { font-family: monospace; color: orange; }
  .tag    { background-color: #eee; font-family: monospace;
            padding: 2px; font-size: 80%; font-weight: normal; }
  .timestamp { color: #bebebe; }
  .timestamp-kwd { color: #5f9ea0; }
  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
  .underline { text-decoration: underline; }
  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
  p.verse { margin-left: 3%; }
  pre {
    border: 1px solid #e6e6e6;
    border-radius: 3px;
    background-color: #f2f2f2;
    padding: 8pt;
    font-family: monospace;
    overflow: auto;
    margin: 1.2em;
  }
  pre.src {
    position: relative;
    overflow: auto;
  }
  pre.src:before {
    display: none;
    position: absolute;
    top: -8px;
    right: 12px;
    padding: 3px;
    color: #555;
    background-color: #f2f2f299;
  }
  pre.src:hover:before { display: inline; margin-top: 14px;}
  /* Languages per Org manual */
  pre.src-asymptote:before { content: 'Asymptote'; }
  pre.src-awk:before { content: 'Awk'; }
  pre.src-authinfo::before { content: 'Authinfo'; }
  pre.src-C:before { content: 'C'; }
  /* pre.src-C++ doesn't work in CSS */
  pre.src-clojure:before { content: 'Clojure'; }
  pre.src-css:before { content: 'CSS'; }
  pre.src-D:before { content: 'D'; }
  pre.src-ditaa:before { content: 'ditaa'; }
  pre.src-dot:before { content: 'Graphviz'; }
  pre.src-calc:before { content: 'Emacs Calc'; }
  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
  pre.src-fortran:before { content: 'Fortran'; }
  pre.src-gnuplot:before { content: 'gnuplot'; }
  pre.src-haskell:before { content: 'Haskell'; }
  pre.src-hledger:before { content: 'hledger'; }
  pre.src-java:before { content: 'Java'; }
  pre.src-js:before { content: 'Javascript'; }
  pre.src-latex:before { content: 'LaTeX'; }
  pre.src-ledger:before { content: 'Ledger'; }
  pre.src-lisp:before { content: 'Lisp'; }
  pre.src-lilypond:before { content: 'Lilypond'; }
  pre.src-lua:before { content: 'Lua'; }
  pre.src-matlab:before { content: 'MATLAB'; }
  pre.src-mscgen:before { content: 'Mscgen'; }
  pre.src-ocaml:before { content: 'Objective Caml'; }
  pre.src-octave:before { content: 'Octave'; }
  pre.src-org:before { content: 'Org mode'; }
  pre.src-oz:before { content: 'OZ'; }
  pre.src-plantuml:before { content: 'Plantuml'; }
  pre.src-processing:before { content: 'Processing.js'; }
  pre.src-python:before { content: 'Python'; }
  pre.src-R:before { content: 'R'; }
  pre.src-ruby:before { content: 'Ruby'; }
  pre.src-sass:before { content: 'Sass'; }
  pre.src-scheme:before { content: 'Scheme'; }
  pre.src-screen:before { content: 'Gnu Screen'; }
  pre.src-sed:before { content: 'Sed'; }
  pre.src-sh:before { content: 'shell'; }
  pre.src-sql:before { content: 'SQL'; }
  pre.src-sqlite:before { content: 'SQLite'; }
  /* additional languages in org.el's org-babel-load-languages alist */
  pre.src-forth:before { content: 'Forth'; }
  pre.src-io:before { content: 'IO'; }
  pre.src-J:before { content: 'J'; }
  pre.src-makefile:before { content: 'Makefile'; }
  pre.src-maxima:before { content: 'Maxima'; }
  pre.src-perl:before { content: 'Perl'; }
  pre.src-picolisp:before { content: 'Pico Lisp'; }
  pre.src-scala:before { content: 'Scala'; }
  pre.src-shell:before { content: 'Shell Script'; }
  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
  /* additional language identifiers per "defun org-babel-execute"
       in ob-*.el */
  pre.src-cpp:before  { content: 'C++'; }
  pre.src-abc:before  { content: 'ABC'; }
  pre.src-coq:before  { content: 'Coq'; }
  pre.src-groovy:before  { content: 'Groovy'; }
  /* additional language identifiers from org-babel-shell-names in
     ob-shell.el: ob-shell is the only babel language using a lambda to put
     the execution function name together. */
  pre.src-bash:before  { content: 'bash'; }
  pre.src-csh:before  { content: 'csh'; }
  pre.src-ash:before  { content: 'ash'; }
  pre.src-dash:before  { content: 'dash'; }
  pre.src-ksh:before  { content: 'ksh'; }
  pre.src-mksh:before  { content: 'mksh'; }
  pre.src-posh:before  { content: 'posh'; }
  /* Additional Emacs modes also supported by the LaTeX listings package */
  pre.src-ada:before { content: 'Ada'; }
  pre.src-asm:before { content: 'Assembler'; }
  pre.src-caml:before { content: 'Caml'; }
  pre.src-delphi:before { content: 'Delphi'; }
  pre.src-html:before { content: 'HTML'; }
  pre.src-idl:before { content: 'IDL'; }
  pre.src-mercury:before { content: 'Mercury'; }
  pre.src-metapost:before { content: 'MetaPost'; }
  pre.src-modula-2:before { content: 'Modula-2'; }
  pre.src-pascal:before { content: 'Pascal'; }
  pre.src-ps:before { content: 'PostScript'; }
  pre.src-prolog:before { content: 'Prolog'; }
  pre.src-simula:before { content: 'Simula'; }
  pre.src-tcl:before { content: 'tcl'; }
  pre.src-tex:before { content: 'TeX'; }
  pre.src-plain-tex:before { content: 'Plain TeX'; }
  pre.src-verilog:before { content: 'Verilog'; }
  pre.src-vhdl:before { content: 'VHDL'; }
  pre.src-xml:before { content: 'XML'; }
  pre.src-nxml:before { content: 'XML'; }
  /* add a generic configuration mode; LaTeX export needs an additional
     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
  pre.src-conf:before { content: 'Configuration File'; }

  table { border-collapse:collapse; }
  caption.t-above { caption-side: top; }
  caption.t-bottom { caption-side: bottom; }
  td, th { vertical-align:top;  }
  th.org-right  { text-align: center;  }
  th.org-left   { text-align: center;   }
  th.org-center { text-align: center; }
  td.org-right  { text-align: right;  }
  td.org-left   { text-align: left;   }
  td.org-center { text-align: center; }
  dt { font-weight: bold; }
  .footpara { display: inline; }
  .footdef  { margin-bottom: 1em; }
  .figure { padding: 1em; }
  .figure p { text-align: center; }
  .equation-container {
    display: table;
    text-align: center;
    width: 100%;
  }
  .equation {
    vertical-align: middle;
  }
  .equation-label {
    display: table-cell;
    text-align: right;
    vertical-align: middle;
  }
  .inlinetask {
    padding: 10px;
    border: 2px solid gray;
    margin: 10px;
    background: #ffffcc;
  }
  #org-div-home-and-up
   { text-align: right; font-size: 70%; white-space: nowrap; }
  textarea { overflow-x: auto; }
  .linenr { font-size: smaller }
  .code-highlighted { background-color: #ffff00; }
  .org-info-js_info-navigation { border-style: none; }
  #org-info-js_console-label
    { font-size: 10px; font-weight: bold; white-space: nowrap; }
  .org-info-js_search-highlight
    { background-color: #ffff00; color: #000000; font-weight: bold; }
  .org-svg { }
</style>
<link rel="stylesheet" type="text/css" href="https://sdowney.org/css/wg21org.css"/>
<link rel="stylesheet" type="text/css" href="https://sdowney.org/css/modus-operandi-tinted.css" />
<script>
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&amp;dn=gpl-3.0.txt GPL-v3-or-Later
     function CodeHighlightOn(elem, id)
     {
       var target = document.getElementById(id);
       if(null != target) {
         elem.classList.add("code-highlighted");
         target.classList.add("code-highlighted");
       }
     }
     function CodeHighlightOff(elem, id)
     {
       var target = document.getElementById(id);
       if(null != target) {
         elem.classList.remove("code-highlighted");
         target.classList.remove("code-highlighted");
       }
     }
// @license-end
</script>
</head>
<body>
<div id="content">
<h1 class="title">"RFC 3514: The Security Flag" for C++</h1>

   <div data-fill-with="spec-metadata">
    <dl>
     <dt>Document #: <dd> P3514R0
     <dt>Date: <dd>2025-04-01
     <dt>Audience: <dd>LEWGI, WG21
     <dt>Reply-to: <dd><a class="p-name fn u-email email" href="mailto:sdowney@gmail.com">Steve Downey &lt;sdowney@gmail.com&gt</a>
     <dt>Source: <dd><a href="https://github.com/steve-downey/wg21org"/>https://github.com/steve-downey/wg21org</a>
                 <dd>evil-bit.org
                 <dd>heads/main-0-g41ab8b7
    </dl>
   </div>
<nav id="toc" role="doc-toc">
<h2 class="no-num no-toc no-ref" id="contents">Table of Contents</h2>

<ul class="toc">
<li><a href="#org5252d4a"><span class="secno">1 </span> <span class="content">Introduction</span></a></li>
<li><a href="#org1792942"><span class="secno">2 </span> <span class="content">Comparison Table</span></a></li>
<li><a href="#orgd4a96c7"><span class="secno">3 </span> <span class="content">Implementation</span></a></li>
<li><a href="#org3d05506"><span class="secno">4 </span> <span class="content">Experience</span></a></li>
<li><a href="#org33445e2"><span class="secno">5 </span> <span class="content">Wording</span></a>
<ul class="toc">
<li><a href="#org4fc83f3"><span class="secno">5.1 </span> <span class="content">Add to [meta.type.synop]</span></a></li>
<li><a href="#orgb377baa"><span class="secno">5.2 </span> <span class="content">Add a new section [meta.security.evil]</span></a></li>
<li><a href="#orgec67269"><span class="secno">5.3 </span> <span class="content">Feature-test macro [version.syn]</span></a></li>
</ul>
</li>
<li><a href="#org7e572eb"><span class="secno">6 </span> <span class="content">Open Questions</span></a></li>
<li><a href="#org9655a20"><span class="secno">7 </span> <span class="content">References</span></a></li>
</ul>

</nav>
<div class="abstract" id="orge55d94b">
<p>
Abstract: Compilers, interpreters, static analysis tools, and the like often have difficulty distinguishing between code that has malicious intent and code that is merely unusual. We define a security flag trait as a means of distinguishing the two cases. Prior art is established by (<a href="#citeproc_bib_item_1">Bellovin 2003</a>).
</p>

</div>
<div id="outline-container-org5252d4a" class="outline-2">
<h2 class="heading" id="org5252d4a" ><span class="section-number-2">1.</span> Introduction</h2>
<div class="outline-text-2" id="text-1">
<p>
Detecting and determining malicious intent is a difficult problem. To solve this, we require that code with malicious intent provide a specialization of a variable template that can be checked by a concept. Benign types will specialize the boolean variable template to false, which will also be the default, malicious types will specialize the template to be true.
</p>

<p>
The semantic constraint of <i>malicious intent</i> means that code that is merely incorrect will be unaffected. Compilers may not infer malicious intent nor may they optimize based on such an inference. Compilers may not, on their own, create time travel paradoxes or put the existence of the timeline at risk.
</p>

<p>
Optimization based on the assertion of evil intent is, however, an open research question. Implementations SHOULD take care that programs containing evil code aer still translated correctly.
</p>

<blockquote>
<p>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
</p>
</blockquote>
</div>
</div>
<div id="outline-container-org1792942" class="outline-2">
<h2 class="heading" id="org1792942" ><span class="section-number-2">2.</span> Comparison Table</h2>
<div class="outline-text-2" id="text-2">
<div class="cmptbl" id="org0a0a682">
<div class="cmptblcell" id="orgbcb7443">
<p>
<b>Before</b>
</p>

</div>
<div class="cmptblcell" id="org5e7247f">
<p>
<b>After</b>
</p>

</div>
<div class="cmptblcell" id="org1551941">
<div class="org-src-container">
<pre class="src src-C++"><span class="org-keyword">template</span><span class="org-rainbow-delimiters-depth-1">&lt;</span><span class="org-keyword">typename</span> <span class="org-type">T</span><span class="org-rainbow-delimiters-depth-1">&gt;</span>
<span class="org-type">int</span> <span class="org-function-name">meow</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">T</span> <span class="org-variable-name">t</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>

</div>
<div class="cmptblcell" id="orgdcefd64">
<div class="org-src-container">
<pre class="src src-C++"><span class="org-keyword">template</span><span class="org-rainbow-delimiters-depth-1">&lt;</span><span class="org-keyword">typename</span> <span class="org-type">T</span><span class="org-rainbow-delimiters-depth-1">&gt;</span>
<span class="org-type">int</span> <span class="org-function-name">meow</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">T</span> <span class="org-variable-name">t</span><span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-keyword">requires</span> <span class="org-negation-char">!</span><span class="org-constant">std</span>::<span class="org-constant">security</span>::<span class="org-type">evil</span><span class="org-rainbow-delimiters-depth-1">&lt;</span><span class="org-type">T</span><span class="org-rainbow-delimiters-depth-1">&gt;</span>;
</pre>
</div>

</div>

</div>
</div>
</div>
<div id="outline-container-orgd4a96c7" class="outline-2">
<h2 class="heading" id="orgd4a96c7" ><span class="section-number-2">3.</span> Implementation</h2>
<div class="outline-text-2" id="text-3">
<div class="org-src-container">
<pre class="src src-cpp"><span class="org-keyword">namespace</span> <span class="org-constant">security</span> <span class="org-bracket"><span class="org-rainbow-delimiters-depth-1">{</span></span>
<span class="org-keyword">template</span><span class="org-operator">&lt;</span> <span class="org-keyword">class</span> <span class="org-type">T</span> <span class="org-operator">&gt;</span>
<span class="org-keyword">constexpr</span> <span class="org-type">bool</span> <span class="org-variable-name">evil_bit</span> <span class="org-operator">=</span> <span class="org-constant">false</span><span class="org-delimiter">;</span>

<span class="org-keyword">template</span><span class="org-operator">&lt;</span> <span class="org-keyword">class</span> <span class="org-type">T</span> <span class="org-operator">&gt;</span>
<span class="org-keyword">concept</span> <span class="org-variable-use">evil</span> <span class="org-operator">=</span> <span class="org-variable-use">evil_bit</span><span class="org-operator"><span class="org-rainbow-delimiters-depth-2">&lt;</span></span><span class="org-constant">std</span>::<span class="org-type">remove_cvref_t</span><span class="org-operator"><span class="org-rainbow-delimiters-depth-3">&lt;</span></span><span class="org-type">T</span><span class="org-operator"><span class="org-rainbow-delimiters-depth-3">&gt;</span></span><span class="org-operator"><span class="org-rainbow-delimiters-depth-2">&gt;</span></span><span class="org-delimiter">;</span>
<span class="org-bracket"><span class="org-rainbow-delimiters-depth-1">}</span></span>
</pre>
</div>

<p>
Note that as the evil bit is not a member of <code>T</code> the evil bit can be set externally to the type, in order support the marking of types that were implemented before the evil bit was standardized.
</p>

<p>
Malicious types that do not define <code>evil_bit&lt;T&gt;</code> to be true are IFNDR.
</p>
</div>
</div>
<div id="outline-container-org3d05506" class="outline-2">
<h2 class="heading" id="org3d05506" ><span class="section-number-2">4.</span> Experience</h2>
<div class="outline-text-2" id="text-4">
<p>
The widespread adoption and improvements in Internet safety and security since RFC 3514 was proposed in 2003 speak for themselves.
</p>
</div>
</div>
<div id="outline-container-org33445e2" class="outline-2">
<h2 class="heading" id="org33445e2" ><span class="section-number-2">5.</span> Wording</h2>
<div class="outline-text-2" id="text-5">
<p>
Based on (<a href="#citeproc_bib_item_5">“N4917: Working Draft, Standard for Programming Language c++”</a>)
</p>
</div>
<div id="outline-container-org4fc83f3" class="outline-3">
<h3 class="heading" id="org4fc83f3" ><span class="section-number-3">5.1.</span> Add to [meta.type.synop]</h3>
<div class="outline-text-3" id="text-5-1">
<div class="org-src-container">
<pre class="src src-cpp"><span class="org-keyword">namespace</span> <span class="org-constant">std</span>::<span class="org-constant">security</span> <span class="org-bracket"><span class="org-rainbow-delimiters-depth-1">{</span></span>

  <span class="org-keyword">template</span><span class="org-operator">&lt;</span><span class="org-keyword">class</span> <span class="org-type">T</span><span class="org-operator">&gt;</span>
    <span class="org-keyword">constexpr</span> <span class="org-type">bool</span> <span class="org-variable-name">evil_bit</span> <span class="org-operator">=</span> <span class="org-constant">false</span><span class="org-delimiter">;</span>

  <span class="org-keyword">template</span><span class="org-operator">&lt;</span><span class="org-keyword">class</span> <span class="org-type">T</span><span class="org-operator">&gt;</span>
    <span class="org-keyword">concept</span> <span class="org-variable-use">evil</span> <span class="org-operator">=</span> <span class="org-comment">/*see below*/</span><span class="org-delimiter">;</span>
<span class="org-bracket"><span class="org-rainbow-delimiters-depth-1">}</span></span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgb377baa" class="outline-3">
<h3 class="heading" id="orgb377baa" ><span class="section-number-3">5.2.</span> Add a new section [meta.security.evil]</h3>
<div class="outline-text-3" id="text-5-2">
<div class="org-src-container">
<pre class="src src-cpp"><span class="org-keyword">template</span><span class="org-operator">&lt;</span><span class="org-keyword">class</span> <span class="org-type">T</span><span class="org-operator">&gt;</span>
  <span class="org-keyword">concept</span> <span class="org-variable-use">evil</span> <span class="org-operator">=</span> <span class="org-variable-use">evil_bit</span><span class="org-operator"><span class="org-rainbow-delimiters-depth-1">&lt;</span></span><span class="org-type">remove_cvref_t</span><span class="org-operator"><span class="org-rainbow-delimiters-depth-2">&lt;</span></span><span class="org-type">T</span><span class="org-operator"><span class="org-rainbow-delimiters-depth-2">&gt;</span></span><span class="org-operator"><span class="org-rainbow-delimiters-depth-1">&gt;</span></span><span class="org-delimiter">;</span>
</pre>
</div>

<p>
Given a variable t of type T, T models <code>evil</code> if and only if the intent of the type is malicious.
</p>

<div class="org-src-container">
<pre class="src src-cpp"><span class="org-keyword">template</span><span class="org-operator">&lt;</span><span class="org-keyword">class</span><span class="org-operator">&gt;</span>
  <span class="org-keyword">constexpr</span> <span class="org-type">bool</span> <span class="org-variable-name">evil_bit</span> <span class="org-operator">=</span> <span class="org-constant">false</span><span class="org-delimiter">;</span>
</pre>
</div>

<p>
Remarks: Pursuant to <code>[namespace.std]</code>, users may specialize <code>evil_bit</code> for cv-unqualified program-defined types. Such specializations shall be usable in constant expressions (<code>[expr.const]</code>) and have type <code>const bool</code>.
</p>
</div>
</div>
<div id="outline-container-orgec67269" class="outline-3">
<h3 class="heading" id="orgec67269" ><span class="section-number-3">5.3.</span> Feature-test macro [version.syn]</h3>
<div class="outline-text-3" id="text-5-3">
<p>
Add the following macro definition to [version.syn], header &lt;version&gt; synopsis, with the value selected by the editor to reflect the date of adoption of this paper:
</p>
<div class="org-src-container">
<pre class="src src-cpp"><span class="org-preprocessor">#define</span> <span class="org-variable-name">__cpp_lib_evil_bit</span> 20XXXXL
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org7e572eb" class="outline-2">
<h2 class="heading" id="org7e572eb" ><span class="section-number-2">6.</span> Open Questions</h2>
<div class="outline-text-2" id="text-6">
<ul class="org-ul">
<li>Should <code>evil_bit</code> be set for deprecated facilities?</li>
<li>Should non-Unicode locales be marked <code>evil</code>?</li>
<li>Should <code>std::regex</code>?</li>
</ul>

<p>
The proposed facility may have interactions with the in-flight proposals for profiles. (<a href="#citeproc_bib_item_8">Reis 2025</a>; <a href="#citeproc_bib_item_13">Voutilainen 2025</a>; <a href="#citeproc_bib_item_4">Jabot 2025</a>; <a href="#citeproc_bib_item_3">Gill et al. 2024</a>; <a href="#citeproc_bib_item_11">Stroustrup 2024c</a>, <a href="#citeproc_bib_item_10">2024b</a>, <a href="#citeproc_bib_item_9">2024a</a>; <a href="#citeproc_bib_item_6">Laverdière, Lapkowski, and Gros 2025</a>; <a href="#citeproc_bib_item_12">Sutter 2025</a>) <i>et al.</i>
</p>

<p>
This proposal places no requirements on any profiles paper and can be adopted independently of any proposal in this area.
</p>

<p>
Similarly, although it would be desirable for contract checks to not be <code>evil</code>, this proposal places no requirements on mandating the lack of evil in contracts.
<i>Caveat lector.</i>
</p>
</div>
</div>
<div id="outline-container-org9655a20" class="outline-2">
<h2 class="heading" id="org9655a20" ><span class="section-number-2">7.</span> References</h2>
<div class="outline-text-2" id="text-7">
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
  <div class="csl-entry"><a id="citeproc_bib_item_1"></a>Bellovin, Steven. 2003. “The Security Flag in the IPv4 Header.” Request for Comments. RFC 3514; RFC Editor. <a href="https://doi.org/10.17487/RFC3514">https://doi.org/10.17487/RFC3514</a>.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_2"></a>Bradner, Scott O. 1997. “Key words for use in RFCs to Indicate Requirement Levels.” Request for Comments. RFC 2119; RFC Editor. <a href="https://doi.org/10.17487/RFC2119">https://doi.org/10.17487/RFC2119</a>.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_3"></a>Gill, Mungo, Corentin Jabot, John Lakos, Joshua Berne, and Timur Doumler. 2024. “P3543R0: Response to Core Safety Profiles (P3081).” https://wg21.link/p3543r0; WG21.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_4"></a>Jabot, Corentin. 2025. “P3586R0: The Plethora of Problems with Profiles.” https://wg21.link/p3586r0; WG21.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_5"></a>Köppe, Thomas. 2022. “N4917: Working Draft, Standard for Programming Language c++.” https://wg21.link/n4917; WG21.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_6"></a>Laverdière, Marc-André, Christopher Lapkowski, and Charles-Henri Gros. 2025. “P3402R2: A Safety Profile Verifying Initialization.” https://wg21.link/p3402r2; WG21.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_7"></a>Leiba, Barry. 2017. “Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words.” Request for Comments. RFC 8174; RFC Editor. <a href="https://doi.org/10.17487/RFC8174">https://doi.org/10.17487/RFC8174</a>.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_8"></a>Reis, Gabriel Dos. 2025. “P3589R1: C++ Profiles: The Framework.” https://wg21.link/p3589r1; WG21.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_9"></a>Stroustrup, Bjarne. 2024a. “P3274R0: A Framework for Profiles Development.” https://wg21.link/p3274r0; WG21.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_10"></a>———. 2024b. “P3446R0: Profile Invalidation - Eliminating Dangling Pointers.” https://wg21.link/p3446r0; WG21.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_11"></a>———. 2024c. “P3447R0: Profiles Syntax.” https://wg21.link/p3447r0; WG21.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_12"></a>Sutter, Herb. 2025. “P3081R2: Core Safety Profiles for c++26.” https://wg21.link/p3081r2; WG21.</div>
  <div class="csl-entry"><a id="citeproc_bib_item_13"></a>Voutilainen, Ville. 2025. “P3608R0: Contracts and Profiles: What Can We Reasonably Ship in c++26.” https://wg21.link/p3608r0; WG21.</div>
</div>

<p>
Exported: 2025-04-06 22:49:58
</p>

<p>
<a href="https://github.com/steve-downey/wg21org/blob/41ab8b7d308b07152bbdeb24d0b6f8f989a53210/evil-bit.org">https://github.com/steve-downey/wg21org/blob/41ab8b7d308b07152bbdeb24d0b6f8f989a53210/evil-bit.org</a>
</p>
</div>
</div>
</div>
</body>
</html>
