<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<title>N2667 Reserved Namespace for POSIX</title>
	<meta name="generator" content="VIM - Vi IMproved 7.1 (2007 May 12, compiled Apr  3 2008 08:37:43)" />
<style type="text/css" title="text/css">
/* <![CDATA[ */
* { font-family: serif; }
*.code { font-size: 120%; font-family: monospace; font-weight: bolder; }
*.non-code { font-style: italic; font-family: monospace; }
p > span.non-code { font-size: 120%; }
*.link-target { font-weight: bolder; }
*.copyright { font-style: italic; }
h1 { text-align: center; }
div.group { border-bottom: double; padding-bottom: .5em; }
div.subgroup { border-bottom: thin solid; padding-bottom: .5em; }
div.added { color: green; text-decoration: underline; }
div.removed { color: red; text-decoration: line-through; }
div.block { border-bottom: thin solid; border-top: thin solid; }
div.menu { padding-top: .5em; padding-bottom: .5em; }
div.menu a { padding-right: .3em; }
div.menu a + a { padding-left: .45em; border-left: thin solid; line-height: 1.3em; }
table.heading { border-collapse: separate; float: right; padding-right: 1em; }
td.descr { padding: 0; text-align: right; font-style: italic; font-weight: bold; }
td.descr:after { content: ":"; }
td.emptydescr { padding: 0; }
td.value { padding: 0; padding-left: 1ex; }
pre { font-family: monospace; }
pre a.code { font-size: 100%; }
pre .decl { font-weight: bolder; font-size: 80%; }
span.reqmt { font-style: italic; }
span.reqmt:after { content: ":" }
span.title { font-style: italic; }
span.added { color: green; text-decoration: underline; }
span.addedd { color: blue; text-decoration: underline; }
span.math { font-style: italic; }
span.removed { color: red; text-decoration: line-through; }
/* ]]> */
</style>
</head>
<body>
<div class="group">

<h1>Reserved Namespace for POSIX</h1>

<table class="heading">
<tr>
  <td class="descr">Document number</td><td class="value">N2667=08-0177</td>
</tr>
<tr>
  <td class="descr">Supercedes</td><td class="value">N2542=08-0052</td>
</tr>
<tr>
  <td class="descr">Date</td><td class="value">2008-06-12</td>

</tr>
<tr>
  <td class="descr">Project</td><td class="value">Programming Language C++</td>
</tr>
<tr>
  <td class="descr">Reference</td><td class="value">ISO/IEC IS 14882:2003(E)</td>
</tr>
<tr>
  <td class="descr">Authors</td><td class="value">Benjamin Kosnik</td>
</tr>
<tr>
  <td class="emptydescr"></td><td class="value">Red Hat</td>
</tr>
<tr>
  <td class="emptydescr"></td><td class="value">bkoz@redhat.com</td>
</tr>
<tr>
  <td class="emptydescr"></td><td class="value">Nick Stoughton</td>

</tr>
<tr>
  <td class="emptydescr"></td><td class="value">USENIX Association</td>
</tr>
<tr>
  <td class="emptydescr"></td><td class="value">nick@usenix.org</td>
</tr>
</table>
<p style="clear:both"></p>
</div>
<h2>Introduction</h2>
<p>
The POSIX liasion report to the LWG at the Bellevue meeting requested
the reservation of possible namespaces for future standardization
work. Two namespaces were mentioned as candidates: <span class=code>std::posix</span>
and <span class=code>::posix</span>.
<p>
The LWG wasn't planning on using either of these namepaces. However,
during the Sophia Antipolis meeting, it was believed that there may be
issues with regard to <span class=code>std::posix</span>, so it it was suggested to formalize
simply the request for <span class=code>::posix</span> in the working draft.
<h2>Proposed Wording</h2>
Make the following changes to 17.4.3 [constraints]:
<p>
<blockquote>
This subclause describes restrictions on C++ programs that use the
facilities of the C++ Standard Library. The following subclauses specify
constraints on the program's use of 
<span class="added">namespaces (17.4.3.1)</span>
<span class="removed">the namespace <span class="code">std</span> (17.4.3.1)</span>, its
use of various reserved names (17.4.3.2), its use of headers (17.4.3.3),
its use of standard library classes as base classes (17.4.3.4), its
definitions of replacement functions (17.4.3.5), and its installation
of handler functions during execution (17.4.3.6).
</blockquote>
Change 17.4.3.1 [namespace.std] as follows:
<blockquote>
<span class="added">17.4.3.1 Namespace Use [namespace.constraints]<p>
</span>
17.4.3.1<span class="added">.1</span>Namespace <span class="code">std</span> [namespace.std]
<p>
The behavior of a C++ program is undefined if it adds declarations or definitions to namespace <span class="code">std</span> or to a namespace
within namespace <span class="code">std</span> unless otherwise specified.
</blockquote>

Add the following new subclause to the new 17.4.3.1 [namespace.constraints]:

<blockquote>
<span class="added">
17.4.3.1.2 Namespace <span class="code">posix</span> [namespace.posix]
<p>
The behavior of a C++ program is undefined if it adds declarations or
definitions to namespace <span class="code">posix</span> or to a namespace within namespace 
<span class="code">posix</span> unless otherwise specified.  The namespace
<span class="code">posix</span> is reserved for use by ISO/IEC 9945 and other
POSIX standards.
</span>
</blockquote>

</body>
</html>
