This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 110b. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
[Adopted at the February, 2016 meeting.]
operator int [[noreturn]] ();
is ambiguous with respect to the binding of the attribute. It could either be parsed (as apparently intended by the user) as part of the noptr-declarator (9.3 [dcl.decl] paragraph 4) or as part of the type-specifier-seq (9.2.9 [dcl.type] paragraph 1) of the conversion-type-id (184.108.40.206 [class.conv.fct] paragraph 1) . Current implementations disambiguate this declaration in favor of the latter interpretation, issuing an error for the declaration because the noreturn attribute cannot apply to a type.
Proposed resolution (February, 2016):
Change 220.127.116.11 [class.conv.fct] paragraph 3 as follows:
The conversion-type-id shall not represent a function type nor an array type. The conversion-type-id in a conversion-function-id is the longest
possiblesequence of conversion-declarators. [Note: This prevents ambiguities between the declarator operator * and its expression counterparts. [Example:&ac.operator int*i; // syntax error: // parsed as: &(ac.operator int *)i // not as: &(ac.operator int)*i
The * is the pointer declarator and not the multiplication operator. —end example]