Defect Report #095

Submission Date: 03 Dec 93
Submittor: WG14
Source: Ron Guilmette
Question
ANSI/ISO C Defect report #rfg2:
There is an ambiguity with respect to the constraints which may (or may not) apply to initializations.
Subclause 6.5.7 says:
... the same type constraints and conversions as for simple assignment apply, ...
Note however that this rule itself appears within a Semantics section, thus leading some implementors to feel that no diagnostics are required in cases where an attempt is made to provide an initializer for a given scalar and where the type of the initializer is not assignment compatible with the type of the scalar object being initialized. This ambiguity should be removed by adding an explicit constraint to the section covering initializations, such as:
Each scalar initializer expression given in an initializer shall have a type such that its value may be assigned to an object with the unqualified version of the corresponding scalar object to be initialized by the given scalar initializer expression.
(This roughly mirrors the existing constraint on parameter matching imposed upon calls to prototyped functions.)
Response
An explicit constraint is not required in the initializer section. Early on, the Committee decided that if a behavior was described as being equivalent to another construct, all of the constraints of that construct would apply. This ``chaining'' process means that any violation of a constraint in any section referred to explicitly or by the phrases ``equivalent behavior'' or ``as if'' will generate a diagnostic.
The constraints in the section on simple assignment (subclause 6.3.16.1) are sufficient to assure type compatibility of the object and the initializer.
Previous Defect Report < - > Next Defect Report