<html>
<head>
<title>Standard and non-standard attributes</title>
<style type="text/css">
blockquote.std { color: #000000; background-color: #F1F1F1;
                 border: 1px solid #D1D1D1;
                 padding-left: 0.5em; padding-right: 0.5em; }
blockquote.stddel { text-decoration: line-through;
                    color: #000000; background-color: #FFA0A0;
                    border: 1px solid #ECD7EC;
                    padding-left: 0.5em; padding-right: 0.5em; }

blockquote.stdins { color: #000000; background-color: #A0FFA0;
                    border: 1px solid #B3EBB3; padding: 0.5em; }

blockquote.stdrepl { color: #000000; background-color: #FFFFA0;
                    border: 1px solid #EBEBB3; padding: 0.5em; }


ins { background-color:#A0FFA0; text-decoration: none }
del { background-color:#FFA0A0; text-decoration: line-through; }
#hidedel:checked ~ * del, #hidedel:checked ~ * del * { display:none; visibility:hidden }

tab { padding-left: 4em; }
tab3 { padding-left: 3em; }
</style>
</head>
<body>
<p align=right>
Document number:<b>P0283R2</b><br/>
Date: <b>2016-06-22</b><br/>
Audience: <b>Core Working Group</b>
<p align=right>
<br/>J. Daniel Garcia (josedaniel.garcia@uc3m.es)
</p>

<BR><BR><HR>

<h1>Standard and non-standard attributes</h1>

<h3>Context</h3>

This paper provides wording for proposal P0283.
For rationale and background information, please, refer to P0283R1 [1].

<h3>Proposed Wording Changes</h3>

<p>Modify paragraph 7.6.1/3:</p>

In an <i>attribute-list</i>, an ellipsis may appear only if that <i>attribute</i>'s specification permits it. An <i>attribute</i>
followed by an ellipsis is a pack expansion (14.5.3). An <i>attribute-specifier</i> that contains no <i>attribute</i>s has no
effect. The order in which the <i>attribute-tokens</i> appear in an <i>attribute-list</i> is not significant. If a keyword (2.11)
or an alternative token (2.5) that satisfies the syntactic requirements of an <i>identifier</i> (2.10) is contained
in an <i>attribute-token</i>, it is considered an identifier. No name lookup (3.4) is performed on any of the
identifiers contained in an <i>attribute-token</i>. The <i>attribute-token</i> determines additional requirements on the
<i>attribute-argument-clause</i> (if any). <del>The use of an <i>attribute-scoped-token</i> is conditionally-supported, with
implementation-defined behavior. [ Note: Each implementation should choose a distinctive name for the
<i>attribute-namespace</i> in an attribute-scoped-token. &mdash; end note]</del>

<p>Modify paragraph 7.6.1/5:</p>

For an <i>attribute-token</i> <ins>(including an <i>attribute-scoped-token</i>)</ins> not specified in this International Standard, the behavior is implementation-defined.
<ins>Any <i>attribute-token</i> that is not recognized by the implementation is ignored</ins>.
<ins>[Note: Each implementation should choose a distinctive name for the
<i>attribute-namespace</i> in an <i>attribute-scoped-token</i>. 
&mdash; end note]</ins>
<h3>Acknowledgements</h3>

The work from J. Daniel Garcia has received funding from the European Union Seventh Framework
Programme (FP7/2007-2013) under grant agreement n. 609666.<br/>
<br/>

Thanks to Jens Maurer for reviewing and suggestions of the wording.

Thanks to Chandler Carruth for pointing out initial ideas. Thanks to Bjarne
Stroustrup, Michael Wong, Richard Smith, and Daveed Vandevoorde for useful
feedback prior to the writing of this paper.

<h3>References</h3>

[1] J. Daniel Garcia. 
Standard and non-standard attributes.
Technical Proposal P0283R1, ISO/IEC JTC1/SC22/WG21, March 2016.

</body>
</html>


