-
Notifications
You must be signed in to change notification settings - Fork 767
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"terminate is called" inconsistency #3079
Comments
See #2150. |
Editorial meeting: Use "call" for function call expressions; use "invoke" for abstract-machine-level discussion of control flow passing to another function. Also in [basic]. |
This resolves CWG2166 |
@languagelawyer , CWG2166 has the title 'Unclear meaning of “undefined constexpr function” '. I fail to see a connection to call vs. invoke. |
@jensmaurer CWG2166 asks: undefined when? At the time of parsing ("call") or when really evaluated (invoked)? Are mutually-recursive The resolution of editorial meeting answers: when really evaluated (invoked), the standard says «expr is a const. expr unless it would evaluate ... an invocation of an undefined |
Clause [except] consistently says "the function
std::terminate
is called".[support.start.term] says "the function
std::terminate
shall be called" (which is an incorrect use of "shall", and redundantstd
-qualification).[terminate.handler] says "The type of a handler function to be called by
std::terminate()
when terminating exception processing" (redundant qualification, completely bogus to use()
when referring to a function by name, rather than describing a function call expression).[execpol.seq], [execpol.par], [execpol.parunseq], and [execpol.unseq] say "
terminate()
shall be called" (incorrect "shall", unclear if it's trying to name the function or show a call expression, but arguably either is correct).[stopsource] and [stopcallback.constr] (added by P0660R10, #3072) say "
terminate()
is called".[thread.thread.constr] and [thread.jthread.constr] (the latter added by P0660R10 #3072) say "
terminate
shall be called" (incorrect "shall").[thread.thread.destr] and [thread.thread.assign] say "calls
terminate()
".[thread.condition.condvar] says "
terminate()
shall be called" many times (incorrect "shall").This is a mess.
The text was updated successfully, but these errors were encountered: