Proposed resolution:
Change [ratio]/2 as indicated:
Throughout this subclause, if the template argument types R1 and R2
shall beare not specializations of the ratio template, the program is ill-formed.Diagnostic required.
Change [ratio.ratio]/1 as indicated:
If tThe template argument D shall not
be is zero, and or the absolute values of
the template arguments N and D shall be are
not representable by type intmax_t, the program is
ill-formed. Diagnostic required. [..]
Change [ratio.arithmetic]/1 as indicated:
Implementations may use other algorithms to compute these values. If overflow occurs, the program is ill-formed
a diagnostic shall be issued.
Change [ratio.comparison]/2 as indicated:
[...] Implementations may use other algorithms to compute this relationship to avoid overflow. If overflow occurs, the program is ill-formed
a diagnostic is required.
Change [unique.ptr.dltr.dflt]/2 as indicated:
Effects: calls delete on ptr.
A diagnostic is required if T is an incomplete type.Remarks: If T is an incomplete type, the program is ill-formed.
Change [unique.ptr.dltr.dflt1]/1 as indicated:
void operator()(T* ptr) const;Effects:
operator()calls delete[] on ptr.A diagnostic is required if T is an incomplete type.Remarks: If T is an incomplete type, the program is ill-formed.
Change [unique.ptr.single.ctor] as indicated: [Note: This editorially improves the currently suggested wording of 932 by replacing
"shall be ill-formed" by "is ill-formed"]
[If N3025 is accepted this bullet is applied identically in that paper as well.]
-1- Requires: D shall be default constructible, and that construction shall not throw an exception.
D shall not be a reference type or pointer type (diagnostic required)....
Remarks: If this constructor is instantiated with a pointer type or reference type for the template argument D, the program is ill-formed.
Change [unique.ptr.single.ctor]/8 as indicated: [Note: This editorially improves the currently suggested wording of 932 by replacing
"shall be ill-formed" by "is ill-formed"]
[If N3025 is accepted this bullet is applied identically in that paper as well.]
unique_ptr(pointer p);...
Remarks: If this constructor is instantiated with a pointer type or reference type for the template argument D, the program is ill-formed.
Change [unique.ptr.single.ctor]/13 as indicated:
[..] If d is an rvalue, it will bind to the second constructor of this pair and the program is ill-formed.
That constructor shall emit a diagnostic.[Note: The diagnostic could be implemented using a static_assert which assures that D is not a reference type. — end note] Else d is an lvalue and will bind to the first constructor of this pair. [..]
Change [unique.ptr.runtime]/1 as indicated:
A specialization for array types is provided with a slightly altered interface.
- Conversions among different types of unique_ptr<T[], D> or to or from the non-array forms of unique_ptr
are disallowed (diagnostic required)produce an ill-formed program.- ...
Change [time.duration]/2-4 as indicated:
2 Requires: Rep shall be an arithmetic type or a class emulating an arithmetic type.
If a program instantiates duration with a duration type for the template argument Rep a diagnostic is required.3 Remarks: If duration is instantiated with a duration type for the template argument Rep, the program is ill-formed.
34RequiresRemarks: If Periodshall beis not a specialization of ratio,diagnostic requiredthe program is ill-formed.
45RequiresRemarks: If Period::numshall beis not positive,diagnostic requiredthe program is ill-formed.
Change [time.point]/2 as indicated:
If Duration
shall beis not an instance of duration, the program is ill-formed.Diagnostic required.