<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 30 April 2015 at 19:14, Richard Smith <span dir="ltr"><<a href="mailto:richard@metafoo.co.uk" target="_blank">richard@metafoo.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On Thu, Apr 30, 2015 at 6:50 PM, Nick Lewycky <span dir="ltr"><<a href="mailto:nlewycky@google.com" target="_blank">nlewycky@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">The thing that the brackets go after is not always an unqualified-id (testcase included). Switch the word for "name".</div></blockquote><div><br></div></span><div>Seems reasonable. While we're here... a diagnostic should generally describe the problem before / instead of describing what we think is the right solution. So something like "unexpected brackets; to declare an array, put the brackets after the name" would seem better phrasing?</div></div></div></div></blockquote><div><br></div><div>Ordinarily I agree, but not in this case. The error is that you put the brackets here instead of there. There is no underlying error, we unambiguously understand what you were trying to write but that simply isn't what C++ says. That the brackets were unexpected here doesn't impart any information if we're already saying the brackets need to go there instead.</div><div><br></div><div>If we go down this road, I'd rather say "brackets are not allowed here; to declare an array, put the brackets after the name" since that indicates that we clearly and unambiguously understood it, C++ just wouldn't let us compile it.</div><div><br></div><div>We could try to explain the grammar, ala. "brackets are a trailing-type-specifier and must be placed after the name" but that seems excess jargon.</div><div><br></div><div>I suppose we could say some form of "expected type specifier in declaration; to declare an array, place the brackets after the name"? This is the wording that I think has the best chance of being helpful if the compiler and programmer have two entirely different ideas of what grammar productions we've followed to get here.</div></div></div></div>