Date
2010-10-21.18:28:33
Message id
1102

Content

Proposed resolution:

  1. Change [ratio]/2 as indicated:

    Throughout this subclause, if the template argument types R1 and R2 shall be are not specializations of the ratio template, the program is ill-formed. Diagnostic required.

  2. 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. [..]

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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. [..]

  10. [unique.ptr.single.ctor]/20: Solved by 950.
  11. 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.
    • ...
  12. 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.

    3 4 Requires Remarks: If Period shall be is not a specialization of ratio, diagnostic required the program is ill-formed.

    4 5 Requires Remarks: If Period::num shall be is not positive, diagnostic required the program is ill-formed.

  13. [time.duration.cons]/1+4: Apply 1177
  14. [time.duration.nonmember]/4+6+8+11: Apply 1177
  15. [time.duration.cast]/1: Apply 1177
  16. Change [time.point]/2 as indicated:

    If Duration shall be is not an instance of duration, the program is ill-formed. Diagnostic required.

  17. [time.point.cons]/3: Apply 1177
  18. [time.point.cast]/1: Apply 1177