Topic: History and evolution of the noexcept proposal?


Author: "Martin B." <0xCDCDCDCD@gmx.at>
Date: Tue, 12 Apr 2011 13:10:34 CST
Raw View
Hi!

As the thread [How on earth did noexcept get through the standards
process?][1] on c.l.c++.m has shown, there is a lot of confusion,
disappointment and questions around `noexcept`.

While the feature we've got is apparently the feature we've got for now -
[We have FDIS!][2] - I at least would find it interesting to see a history
of how `noexcept` evolved into the current form [N3242][3] (see, among other
sections, 15.5.1 The std::terminate() function).

Danny Kalev did a great job about a year ago of summarizing [The debate on
noexcept][4] but I am unclear if there are any more recent changes wrt this
feature and also whether he's spot on on all arguments.

I think the following bullets would help in isolation to clear up some
questions that arose in [1]:

* Search help: Is there an easy way of searching/finding/obtaining a list of
all WG21 proposals and papers that deal with `noexcept` and for each to
verify when it was accepted or rejected and why?

* Rationale: Why was the noexcept-block, as proposed in [N2855][5], scraped?
This block would have made it trivial for compilers to statically "enforce"
`noexcept`, just as they "enforce" `const` at the moment.

* Rationale: Why did "call terminate()" win over "undefined behaviour" for
`noexcept` violations.

* Rationale: Why was it left implementation-defined, whether the stack would
be unwound/partially in case of a noexcept violation?


Any pointers appreciated. Please keep the guesswork to a minimum and mark it
clearly as guesswork :-)

cheers,
Martin

      [1] :
http://groups.google.com/group/comp.lang.c++.moderated/browse_frm/thread/9adab213129c178/7afafcdf84c5f7b1
      [2] :
http://herbsutter.com/2011/03/25/we-have-fdis-trip-report-march-2011-c-standards-meeting/
      [3] : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf
      [4] : http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=481
      [5] :
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2855.html#noexcept-block


--
Stop Software Patents
http://petition.stopsoftwarepatents.eu/841006602158/
http://www.ffii.org/


[ comp.std.c++ is moderated.  To submit articles, try posting with your ]
[ newsreader.  If that fails, use mailto:std-cpp-submit@vandevoorde.com ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html                      ]





Author: "Martin B." <0xCDCDCDCD@gmx.at>
Date: Thu, 28 Apr 2011 12:19:48 CST
Raw View
On 12.04.2011 21:10, Martin B. wrote:

>
> As the thread [How on earth did noexcept get through the standards
> process?][1] on c.l.c++.m has shown, there is a lot of confusion,
> disappointment and questions around `noexcept`.
> (...)
> I think the following bullets would help in isolation to clear up some
> questions that arose in [1]:
>
> * Search help: Is there an easy way of searching/finding/obtaining a
> list of
> all WG21 proposals and papers that deal with `noexcept` and for each to
> verify when it was accepted or rejected and why?
>
>
My Google search for this included variations on:

  noexcept site:http://www.open-std.org/jtc1/sc22/wg21
  N2855 site:http://www.open-std.org/jtc1/sc22/wg21
  "noexcept block" site:http://www.open-std.org/jtc1/sc22/wg21
  ...

* Rationale: Why was the noexcept-block, as proposed in [N2855][5],
> scraped?
> This block would have made it trivial for compilers to statically "enforce"
> `noexcept`, just as they "enforce" `const` at the moment.
> (...)
>

Interestingly, N2855 was the *only* reference in papers, minutes and
comments I could find wrt. the noexcept-block.

Wrt. to statically checking noexcept, I could find one (1) other reference
in a side note in N3202 - To which extent can noexcept be deduced? - by
Bjarne Stroustrup:

   (...) First: in general we cannot know
   if a function throws - that would
   require (perfect) flow analysis (and in the worst case
   solving the halting problem). (...)

   (...) I know that some wants static checking of
   noexcept, but I don't and I consider static
   checking not an option for C++0x. I don't even
   want that discussion now. (...)

So it would appear I didn't find any rationale on this (yet), but at least
Bjarne "Mr. C++" Stroustrup seemed convinced at one point that statically
checking noexcept doesn't make sense at the moment.

cheers,
Martin


--
[ comp.std.c++ is moderated.  To submit articles, try posting with your ]
[ newsreader.  If that fails, use mailto:std-cpp-submit@vandevoorde.com ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html                      ]