Title
The definition of “sequenced before” is too narrow
Status
open
Section
6.9.1 [intro.execution]
Submitter
Jens Maurer

Created on 2008-07-13.00:00:00 last changed 200 months ago

Messages

Date: 2016-02-15.00:00:00

According to 6.9.1 [intro.execution] paragraph 14, “sequenced before” is a relation between “evaluations.” However, 6.9.3.3 [basic.start.dynamic] paragraph 3 says,

If the completion of the initialization of a non-local object with static storage duration is sequenced before a call to std::atexit (see <cstdlib>, 17.5 [support.start.term]), the call to the function passed to std::atexit is sequenced before the call to the destructor for the object. If a call to std::atexit is sequenced before the completion of the initialization of a non-local object with static storage duration, the call to the destructor for the object is sequenced before the call to the function passed to std::atexit. If a call to std::atexit is sequenced before another call to std::atexit, the call to the function passed to the second std::atexit call is sequenced before the call to the function passed to the first std::atexit call.

Except for the calls to std::atexit, these events do not correspond to “evaluation” of expressions that appear in the program. If the “sequenced before” relation is to be applied to them, a more comprehensive definition is needed.

History
Date User Action Args
2008-07-13 00:00:00admincreate