diff --git a/issue4144.html b/issue4144.html index 92d8daf6e0..a5df85046d 100644 --- a/issue4144.html +++ b/issue4144.html @@ -4,7 +4,7 @@ Issue 4144: Disallow unique_ptr<T&, D> - + @@ -61,14 +61,14 @@
-

This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.

+

This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Tentatively Ready status.

4144. Disallow unique_ptr<T&, D>

-

Section: 20.3.1.3.1 [unique.ptr.single.general] Status: New - Submitter: Jonathan Wakely Opened: 2024-08-30 Last modified: 2024-08-31

+

Section: 20.3.1.3.1 [unique.ptr.single.general] Status: Tentatively Ready + Submitter: Jonathan Wakely Opened: 2024-08-30 Last modified: 2024-11-13

Priority: Not Prioritized

View all other issues in [unique.ptr.single.general].

-

View all issues with New status.

+

View all issues with Tentatively Ready status.

Discussion:

It seems that we currently allow nonsensical specializations of unique_ptr @@ -101,6 +101,13 @@

4144. Disallow unique_ptr disallowing these specializations for non-pointable types.

+

[2024-11-13; Reflector poll]

+ +

+Set status to Tentatively Ready after eight votes in favour during reflector poll. +

+ +

Proposed resolution:

diff --git a/issue4169.html b/issue4169.html index 53d7970456..46c8f38370 100644 --- a/issue4169.html +++ b/issue4169.html @@ -4,7 +4,7 @@ Issue 4169: std::atomic<T>'s default constructor should be constrained - + @@ -61,15 +61,15 @@


-

This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.

+

This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Tentatively Ready status.

4169. std::atomic<T>'s default constructor should be constrained

-

Section: 32.5.8.2 [atomics.types.operations] Status: New - Submitter: Giuseppe D'Angelo Opened: 2024-10-15 Last modified: 2024-10-31

+

Section: 32.5.8.2 [atomics.types.operations] Status: Tentatively Ready + Submitter: Giuseppe D'Angelo Opened: 2024-10-15 Last modified: 2024-11-13

Priority: Not Prioritized

View other active issues in [atomics.types.operations].

View all other issues in [atomics.types.operations].

-

View all issues with New status.

+

View all issues with Tentatively Ready status.

Discussion:

The current wording for std::atomic's default constructor in @@ -115,6 +115,13 @@

4169. std::atomic<T> and only if T also is.

+

[2024-11-13; Reflector poll]

+ +

+Set status to Tentatively Ready after seven votes in favour during reflector poll. +

+ +

Proposed resolution:

diff --git a/issue4170.html b/issue4170.html index ec5b6dfc4b..c0465e32e4 100644 --- a/issue4170.html +++ b/issue4170.html @@ -4,7 +4,7 @@ Issue 4170: contiguous_iterator should require to_address(I{}) - + @@ -61,14 +61,14 @@


-

This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.

+

This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Tentatively Ready status.

4170. contiguous_iterator should require to_address(I{})

-

Section: 24.3.4.14 [iterator.concept.contiguous] Status: New - Submitter: Casey Carter Opened: 2024-11-01 Last modified: 2024-11-01

+

Section: 24.3.4.14 [iterator.concept.contiguous] Status: Tentatively Ready + Submitter: Casey Carter Opened: 2024-11-01 Last modified: 2024-11-13

Priority: Not Prioritized

View all other issues in [iterator.concept.contiguous].

-

View all issues with New status.

+

View all issues with Tentatively Ready status.

Discussion:

The design intent of the contiguous_iterator concept is that iterators can be converted @@ -88,6 +88,13 @@

4170. co to empty pointer ranges as desired.

+

[2024-11-13; Reflector poll]

+ +

+Set status to Tentatively Ready after eight votes in favour during reflector poll. +

+ +

Proposed resolution:

diff --git a/lwg-active.html b/lwg-active.html index fe42367a36..ef8462272b 100644 --- a/lwg-active.html +++ b/lwg-active.html @@ -67,7 +67,7 @@ Date: - 2024-11-07 + 2024-11-13 Project: @@ -79,7 +79,7 @@

C++ Standard Library Active Issues List (Revision D125)

-

Revised 2024-11-07 at 13:31:35 UTC +

Revised 2024-11-13 at 20:39:34 UTC

Reference ISO/IEC IS 14882:2020(E)

Also see:

@@ -206,17 +206,17 @@

Revision History

  • Details:
  • Details:
  • Details:
    • Added the following 11 Ready issues: 4014, 4024, 4027, 4044, 4064, 4072, 4085, 4112, 4134, 4154, 4164.
    • -
    • Added the following 14 Tentatively Ready issues: 4084, 4088, 4113, 4119, 4124, 4126, 4135, 4140, 4141, 4142, 4147, 4148, 4153, 4157.
    • +
    • Added the following 17 Tentatively Ready issues: 4084, 4088, 4113, 4119, 4124, 4126, 4135, 4140, 4141, 4142, 4144, 4147, 4148, 4153, 4157, 4169, 4170.
    • Added the following 7 Tentatively NAD issues: 3958, 3980, 3981, 3982, 4003, 4006, 4095.
    • -
    • Added the following 133 New issues: 3945, 3952, 3954, 3955, 3956, 3959, 3960, 3961, 3962, 3963, 3945, 3952, 3954, 3955, 3956, 3959, 3960, 3961, 3962, 3963, 3964, 3966, 3967, 3968, 3969, 3972, 3976, 3977, 3979, 3983, 3985, 3986, 3989, 3991, 3992, 3993, 3994, 3995, 3997, 3998, 3999, 4000, 4002, 4005, 4007, 4008, 4009, 4010, 4017, 4018, 4020, 4021, 4022, 4026, 4028, 4029, 4032, 4033, 4034, 4039, 4040, 4041, 4046, 4047, 4048, 4049, 4050, 4051, 4052, 4055, 4057, 4058, 4059, 4062, 4063, 4065, 4066, 4067, 4068, 4073, 4077, 4078, 4080, 4081, 4089, 4091, 4092, 4093, 4094, 4099, 4100, 4101, 4102, 4103, 4104, 4107, 4109, 4110, 4111, 4114, 4115, 4116, 4117, 4118, 4120, 4121, 4122, 4123, 4125, 4127, 4128, 4129, 4130, 4131, 4132, 4133, 4136, 4137, 4138, 4139, 4143, 4144, 4145, 4146, 4149, 4150, 4151, 4152, 4155, 4156, 4158, 4159, 4160, 4161, 4162, 4163, 4165, 4166, 4167, 4168, 4169, 4170, 4171.
    • +forward_iterator (Status: New)">4120, 4121, 4122, 4123, 4125, 4127, 4128, 4129, 4130, 4131, 4132, 4133, 4136, 4137, 4138, 4139, 4143, 4145, 4146, 4149, 4150, 4151, 4152, 4155, 4156, 4158, 4159, 4160, 4161, 4162, 4163, 4165, 4166, 4167, 4168, 4171.
    • Added the following 3 Open issues: 3988, 4015, 4069.
    • Added the following 2 LEWG issues: 4042, 4097.
    • Added the following 2 SG1 issues: 4004, 4075.
    • diff --git a/lwg-immediate.html b/lwg-immediate.html index 9a34ebead2..4b02a894a3 100644 --- a/lwg-immediate.html +++ b/lwg-immediate.html @@ -62,7 +62,7 @@

      C++ Standard Library Issues Resolved Directly In [INSERT CURRENT MEETING HER Date: -Revised 2024-11-07 at 13:31:35 UTC +Revised 2024-11-13 at 20:39:34 UTC diff --git a/lwg-index-open.html b/lwg-index-open.html index 64b4142a61..a3f1b924cf 100644 --- a/lwg-index-open.html +++ b/lwg-index-open.html @@ -66,7 +66,7 @@

      Index by Section

      This document is the Index by Section for the Library Active Issues List.

      Index by Section (non-Ready active issues only)

      (view all issues)

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Section 3 (2 issues)

      (view all issues)

      @@ -1104,8 +1104,8 @@

      Section 20 (25 issues)

      - - + + @@ -2522,8 +2522,8 @@

      Section 24 (40 issues)

      - - + + @@ -5261,8 +5261,8 @@

      Section 32 (41 issues)

      - - + + diff --git a/lwg-index.html b/lwg-index.html index ac1805fa06..223b435c94 100644 --- a/lwg-index.html +++ b/lwg-index.html @@ -66,7 +66,7 @@

      Index by Section

      This document is the Index by Section for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      Index by Section

      (view only non-Ready open issues)

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Section 2 (2 issues)

      4144(i)New4144(i)Tentatively Ready 20.3.1.3.1 [unique.ptr.single.general] Disallow unique_ptr<T&, D> Yes
      4170(i)New4170(i)Tentatively Ready 24.3.4.14 [iterator.concept.contiguous] contiguous_iterator should require to_address(I{}) Yes
      4169(i)New4169(i)Tentatively Ready 32.5.8.2 [atomics.types.operations] std::atomic<T>'s default constructor should be constrained Yes
      @@ -4954,8 +4954,8 @@

      Section 20 (207 issues)

      - - + + @@ -14074,8 +14074,8 @@

      Section 24 (205 issues)

      - - + + @@ -29412,8 +29412,8 @@

      Section 32 (275 issues)

      - - + + diff --git a/lwg-ready.html b/lwg-ready.html index 096fe1c22e..71e32879fd 100644 --- a/lwg-ready.html +++ b/lwg-ready.html @@ -62,7 +62,7 @@

      C++ Standard Library Issues to be moved in [INSERT CURRENT MEETING HERE]

      - @@ -4058,6 +4058,115 @@

      41424144(i). Disallow unique_ptr<T&, D>

      +

      Section: 20.3.1.3.1 [unique.ptr.single.general] Status: Tentatively Ready + Submitter: Jonathan Wakely Opened: 2024-08-30 Last modified: 2024-11-13

      +

      Priority: Not Prioritized +

      +

      View all other issues in [unique.ptr.single.general].

      +

      View all issues with Tentatively Ready status.

      +

      Discussion:

      +

      +It seems that we currently allow nonsensical specializations of unique_ptr +such as unique_ptr<int&, D> +and unique_ptr<void()const, D> +(a custom deleter that defines D::pointer is needed, because otherwise +the pointer type would default to invalid types like +int&* or void(*)()const). +There seems to be no reason to support these "unique pointer to reference" +and "unique pointer to abominable function type" specializations, +or any specialization for a type that you couldn't form a raw pointer to. +

      + +

      +Prior to C++17, the major library implementations rejected such specializations +as a side effect of the constraints for the +unique_ptr(auto_ptr<U>&&) constructor +being defined in terms of is_convertible<U*, T*>. +This meant that overload resolution for any constructor of unique_ptr +would attempt to form the type T* and fail if that was invalid. +With the removal of auto_ptr in C++17, that constructor was removed +and now unique_ptr<int&, D> can be instantiated +(assuming any zombie definition of auto_ptr is not enabled by the library). +This wasn't intentional, but just an accident caused by not explicitly +forbidding such types. +

      + +

      +Discussion on the LWG reflector led to near-unanimous support for explicitly +disallowing these specializations for non-pointable types. +

      + +

      [2024-11-13; Reflector poll]

      + +

      +Set status to Tentatively Ready after eight votes in favour during reflector poll. +

      + + + +

      Proposed resolution:

      +

      +This wording is relative to N4988. +

      + +
        +
      1. Modify 20.3.1.3.1 [unique.ptr.single.general] as indicated:

        +
        +

        -?- +A program that instantiates the definition of +unique_ptr<T, D> +is ill-formed if T* is an invalid type. +
        +[Note: +This prevents the intantiation of specializations such as +unique_ptr<T&, D> +and unique_ptr<int() const, D>. +— end note] +
        +

        +

        -1- +The default type for the template parameter D is default_delete. +A client-supplied template argument D shall be a function object type +(22.10 [function.objects]), lvalue reference to function, +or lvalue reference to function object type for which, +given a value d of type D and a value ptr of type +unique_ptr<T, D>::pointer, +the expression d(ptr) is valid and has the effect of disposing of the pointer +as appropriate for that deleter. +

        +

        -2- +If the deleter’s type D is not a reference type, +D shall meet the Cpp17Destructible requirements (Table 35). +

        +

        -3- +If the qualified-id remove_reference_t<D>::pointer +is valid and denotes a type (13.10.3 [temp.deduct]), +then unique_ptr<T, D>::pointer +shall be a synonym for remove_reference_t<D>::pointer. +Otherwise unique_ptr<T, D>::pointer shall be a synonym for +element_type*. +The type unique_ptr<T, D>::pointer shall meet the +Cpp17NullablePointer requirements (Table 36). +

        +

        -4- +[Example 1: + Given an allocator type X (16.4.4.6.1 [allocator.requirements.general]) +and letting A be a synonym for allocator_traits<X>, +the types A::pointer, A::const_pointer, A::void_pointer, +and A::const_void_pointer may be used as +unique_ptr<T, D>::pointer. +— end example] +

        +
        +
      2. +
      + + + + +

      4147(i). Precondition on inplace_vector::emplace

      Section: 23.2.4 [sequence.reqmts] Status: Tentatively Ready @@ -4578,5 +4687,186 @@

      41644169(i). std::atomic<T>'s default constructor should be constrained

      +

      Section: 32.5.8.2 [atomics.types.operations] Status: Tentatively Ready + Submitter: Giuseppe D'Angelo Opened: 2024-10-15 Last modified: 2024-11-13

      +

      Priority: Not Prioritized +

      +

      View other active issues in [atomics.types.operations].

      +

      View all other issues in [atomics.types.operations].

      +

      View all issues with Tentatively Ready status.

      +

      Discussion:

      +

      +The current wording for std::atomic's default constructor in +32.5.8.2 [atomics.types.operations] specifies: +

      +
      +
      +constexpr atomic() noexcept(is_nothrow_default_constructible_v<T>);
      +
      +
      +

      +Mandates: is_default_constructible_v<T> is true. +

      +
      +
      +

      +This wording has been added by P0883R2 for C++20, which changed +std::atomic's default constructor to always value-initialize. Before, +the behavior of this constructor was not well specified (this was LWG +issue 2334(i)). +

      +The usage of a Mandates element in the specification has as a +consequence that std::atomic<T> is always default constructible, even +when T is not. For instance: +

      +
      +
      +// not default constructible:
      +struct NDC { NDC(int) {} };
      +
      +static_assert(std::is_default_constructible<std::atomic<NDC>>); // OK
      +
      +
      +

      +The above check is OK as per language rules, but this is user-hostile: +actually using std::atomic<NDC>'s default constructor results in an +error, despite the detection saying otherwise. +

      +Given that std::atomic<T> already requires T to be complete anyhow +(32.5.8.1 [atomics.types.generic.general] checks for various type properties +which require completeness) it would be more appropriate to use a +constraint instead, so that std::atomic<T> is default constructible if +and only if T also is. +

      + +

      [2024-11-13; Reflector poll]

      + +

      +Set status to Tentatively Ready after seven votes in favour during reflector poll. +

      + + + +

      Proposed resolution:

      +

      +This wording is relative to N4993. +

      + +
        +
      1. Modify 32.5.8.2 [atomics.types.operations] as indicated:

        + +
        +

        +[Drafting note: There is implementation divergence at the moment; libstdc++ already +implements the proposed resolution and has done so for a while.] +

        +
        + +
        +
        +constexpr atomic() noexcept(is_nothrow_default_constructible_v<T>);
        +
        +
        +

        +-1- ConstraintsMandates: is_default_constructible_v<T> is true. +

        +-2- Effects: […] +

        +
        +
        + +
      2. +
      + + + + +
      +

      4170(i). contiguous_iterator should require to_address(I{})

      +

      Section: 24.3.4.14 [iterator.concept.contiguous] Status: Tentatively Ready + Submitter: Casey Carter Opened: 2024-11-01 Last modified: 2024-11-13

      +

      Priority: Not Prioritized +

      +

      View all other issues in [iterator.concept.contiguous].

      +

      View all issues with Tentatively Ready status.

      +

      Discussion:

      +

      +The design intent of the contiguous_iterator concept is that iterators can be converted +to pointers denoting the same sequence of elements. This enables a common range [i, j) +or counted range i + [0, n) to be processed with extremely efficient low-level C +or assembly code that operates on [to_address(i), to_address(j)) (respectively +to_address(i) + [0, n)). +

      +A value-initialized iterator I{} can be used to denote the empty ranges [I{}, I{}) +and I{} + [0, 0). While the existing semantic requirements of contiguous_iterator enable us +to convert both dereferenceable and past-the-end iterators with to_address, converting +ranges involving value-initialized iterators to pointer ranges additionally needs +to_address(I{}) to be well-defined. Note that to_address is already implicitly +equality-preserving for contiguous_iterator arguments. Given this additional requirement +to_address(I{}) == to_address(I{}) and to_address(I{}) == to_address(I{)) + 0 +both hold, so the two types of empty ranges involving value-initialized iterators convert +to empty pointer ranges as desired. +

      + +

      [2024-11-13; Reflector poll]

      + +

      +Set status to Tentatively Ready after eight votes in favour during reflector poll. +

      + + + +

      Proposed resolution:

      +

      +This wording is relative to N4993. +

      + +
        +
      1. Modify 24.3.4.14 [iterator.concept.contiguous] as indicated:

        + +
        +

        +-1- The contiguous_iterator concept provides a guarantee that the denoted elements are stored contiguously +in memory. +

        +
        +
        +template<class I>
        +  concept contiguous_iterator =
        +    random_access_iterator<I> &&
        +    derived_from<ITER_CONCEPT(I), contiguous_iterator_tag> &&
        +    is_lvalue_reference_v<iter_reference_t<I>> &&
        +    same_as<iter_value_t<I>, remove_cvref_t<iter_reference_t<I>>> &&
        +    requires(const I& i) {
        +      { to_address(i) } -> same_as<add_pointer_t<iter_reference_t<I>>>;
        +    };
        +
        +
        +

        +-2- Let a and b be dereferenceable iterators and c be a non-dereferenceable iterator of type +I such that b is reachable from a and c is reachable from b, and let D be +iter_difference_t<I>. The type I models contiguous_iterator only if +

        + +
          +
        1. (2.1) — to_address(a) == addressof(*a),

        2. +
        3. (2.2) — to_address(b) == to_address(a) + D(b - a),

        4. +
        5. (2.3) — to_address(c) == to_address(a) + D(c - a),

        6. +
        7. (2.?) — to_address(I{}) is well-defined,

        8. +
        9. (2.4) — ranges::iter_move(a) has the same type, value category, and effects as +std::move(*a), and

        10. +
        11. (2.5) — if ranges::iter_swap(a, b) is well-formed, it has effects equivalent to +ranges::swap(*a, *b).

        12. +
        +
        + +
      2. +
      + + + + diff --git a/lwg-status-date.html b/lwg-status-date.html index 4902652d10..de5c100b27 100644 --- a/lwg-status-date.html +++ b/lwg-status-date.html @@ -67,7 +67,7 @@

      Index by Status and Date

      This document is the Index by Status and Date for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Ready (15 issues)

      4144(i)New4144(i)Tentatively Ready 20.3.1.3.1 [unique.ptr.single.general] Disallow unique_ptr<T&, D> Yes
      4170(i)New4170(i)Tentatively Ready 24.3.4.14 [iterator.concept.contiguous] contiguous_iterator should require to_address(I{}) Yes
      4169(i)New4169(i)Tentatively Ready 32.5.8.2 [atomics.types.operations] std::atomic<T>'s default constructor should be constrained Yes
      Date:Revised 2024-11-07 at 13:31:35 UTC +Revised 2024-11-13 at 20:39:34 UTC
      @@ -217,7 +217,7 @@

      Index by Status and Date

      -

      Tentatively Ready (16 issues)

      +

      Tentatively Ready (19 issues)

      @@ -229,6 +229,33 @@

      Tentatively Ready (16 issues)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -468,7 +495,7 @@

      Tentatively NAD (9 issues)

      Issue Duplicates
      4144(i)Tentatively Ready20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      4170(i)Tentatively Ready24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      4169(i)Tentatively Ready32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      4088(i) Tentatively Ready 31.7.6.3.5 [ostream.formatted.print]
      -

      New (441 issues)

      +

      New (438 issues)

      @@ -489,15 +516,6 @@

      New (441 issues)

      - - - - - - - - - @@ -507,15 +525,6 @@

      New (441 issues)

      - - - - - - - - - @@ -754,15 +763,6 @@

      New (441 issues)

      - - - - - - - - - diff --git a/lwg-status.html b/lwg-status.html index 341c29f102..86b47e0d38 100644 --- a/lwg-status.html +++ b/lwg-status.html @@ -62,7 +62,7 @@

      Index by Status and Section

      Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Ready (15 issues)

      Issue
      4170(i)New24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      4168(i) New 20.2.6 [obj.lifetime]
      4169(i)New32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      4167(i) New
      4144(i)New20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      4120(i) New
      @@ -212,7 +212,7 @@

      Index by Status and Section

      -

      Tentatively Ready (16 issues)

      +

      Tentatively Ready (19 issues)

      @@ -242,6 +242,15 @@

      Tentatively Ready (16 issues)

      + + + + + + + + + @@ -316,6 +325,15 @@

      Tentatively Ready (16 issues)

      + + + + + + + + + @@ -369,6 +387,15 @@

      Tentatively Ready (16 issues)

      + + + + + + + + +
      Issue
      4144(i)Tentatively Ready20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      4148(i) Tentatively Ready 20.3.1.3.5 [unique.ptr.single.observers]
      4170(i)Tentatively Ready24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      4119(i) Tentatively Ready 25.8.5 [coro.generator.promise]
      4169(i)Tentatively Ready32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes

      Tentatively NAD (9 issues)

      @@ -463,7 +490,7 @@

      Tentatively NAD (9 issues)

      -

      New (441 issues)

      +

      New (438 issues)

      @@ -1264,15 +1291,6 @@

      New (441 issues)

      - - - - - - - - - @@ -2203,15 +2221,6 @@

      New (441 issues)

      - - - - - - - - - @@ -4260,15 +4269,6 @@

      New (441 issues)

      - - - - - - - - - diff --git a/lwg-tentative.html b/lwg-tentative.html index 97105b79dd..9689b72d5c 100644 --- a/lwg-tentative.html +++ b/lwg-tentative.html @@ -54,7 +54,7 @@ -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Tentative Issues


      3216(i). Rebinding the allocator before calling construct/destroy in allocate_shared

      @@ -2601,6 +2601,115 @@

      41424144(i). Disallow unique_ptr<T&, D>

      +

      Section: 20.3.1.3.1 [unique.ptr.single.general] Status: Tentatively Ready + Submitter: Jonathan Wakely Opened: 2024-08-30 Last modified: 2024-11-13

      +

      Priority: Not Prioritized +

      +

      View all other issues in [unique.ptr.single.general].

      +

      View all issues with Tentatively Ready status.

      +

      Discussion:

      +

      +It seems that we currently allow nonsensical specializations of unique_ptr +such as unique_ptr<int&, D> +and unique_ptr<void()const, D> +(a custom deleter that defines D::pointer is needed, because otherwise +the pointer type would default to invalid types like +int&* or void(*)()const). +There seems to be no reason to support these "unique pointer to reference" +and "unique pointer to abominable function type" specializations, +or any specialization for a type that you couldn't form a raw pointer to. +

      + +

      +Prior to C++17, the major library implementations rejected such specializations +as a side effect of the constraints for the +unique_ptr(auto_ptr<U>&&) constructor +being defined in terms of is_convertible<U*, T*>. +This meant that overload resolution for any constructor of unique_ptr +would attempt to form the type T* and fail if that was invalid. +With the removal of auto_ptr in C++17, that constructor was removed +and now unique_ptr<int&, D> can be instantiated +(assuming any zombie definition of auto_ptr is not enabled by the library). +This wasn't intentional, but just an accident caused by not explicitly +forbidding such types. +

      + +

      +Discussion on the LWG reflector led to near-unanimous support for explicitly +disallowing these specializations for non-pointable types. +

      + +

      [2024-11-13; Reflector poll]

      + +

      +Set status to Tentatively Ready after eight votes in favour during reflector poll. +

      + + + +

      Proposed resolution:

      +

      +This wording is relative to N4988. +

      + +
        +
      1. Modify 20.3.1.3.1 [unique.ptr.single.general] as indicated:

        +
        +

        -?- +A program that instantiates the definition of +unique_ptr<T, D> +is ill-formed if T* is an invalid type. +
        +[Note: +This prevents the intantiation of specializations such as +unique_ptr<T&, D> +and unique_ptr<int() const, D>. +— end note] +
        +

        +

        -1- +The default type for the template parameter D is default_delete. +A client-supplied template argument D shall be a function object type +(22.10 [function.objects]), lvalue reference to function, +or lvalue reference to function object type for which, +given a value d of type D and a value ptr of type +unique_ptr<T, D>::pointer, +the expression d(ptr) is valid and has the effect of disposing of the pointer +as appropriate for that deleter. +

        +

        -2- +If the deleter’s type D is not a reference type, +D shall meet the Cpp17Destructible requirements (Table 35). +

        +

        -3- +If the qualified-id remove_reference_t<D>::pointer +is valid and denotes a type (13.10.3 [temp.deduct]), +then unique_ptr<T, D>::pointer +shall be a synonym for remove_reference_t<D>::pointer. +Otherwise unique_ptr<T, D>::pointer shall be a synonym for +element_type*. +The type unique_ptr<T, D>::pointer shall meet the +Cpp17NullablePointer requirements (Table 36). +

        +

        -4- +[Example 1: + Given an allocator type X (16.4.4.6.1 [allocator.requirements.general]) +and letting A be a synonym for allocator_traits<X>, +the types A::pointer, A::const_pointer, A::void_pointer, +and A::const_void_pointer may be used as +unique_ptr<T, D>::pointer. +— end example] +

        +
        +
      2. +
      + + + + +

      4147(i). Precondition on inplace_vector::emplace

      Section: 23.2.4 [sequence.reqmts] Status: Tentatively Ready @@ -2851,5 +2960,186 @@

      41574169(i). std::atomic<T>'s default constructor should be constrained

      +

      Section: 32.5.8.2 [atomics.types.operations] Status: Tentatively Ready + Submitter: Giuseppe D'Angelo Opened: 2024-10-15 Last modified: 2024-11-13

      +

      Priority: Not Prioritized +

      +

      View other active issues in [atomics.types.operations].

      +

      View all other issues in [atomics.types.operations].

      +

      View all issues with Tentatively Ready status.

      +

      Discussion:

      +

      +The current wording for std::atomic's default constructor in +32.5.8.2 [atomics.types.operations] specifies: +

      +
      +
      +constexpr atomic() noexcept(is_nothrow_default_constructible_v<T>);
      +
      +
      +

      +Mandates: is_default_constructible_v<T> is true. +

      +
      +
      +

      +This wording has been added by P0883R2 for C++20, which changed +std::atomic's default constructor to always value-initialize. Before, +the behavior of this constructor was not well specified (this was LWG +issue 2334(i)). +

      +The usage of a Mandates element in the specification has as a +consequence that std::atomic<T> is always default constructible, even +when T is not. For instance: +

      +
      +
      +// not default constructible:
      +struct NDC { NDC(int) {} };
      +
      +static_assert(std::is_default_constructible<std::atomic<NDC>>); // OK
      +
      +
      +

      +The above check is OK as per language rules, but this is user-hostile: +actually using std::atomic<NDC>'s default constructor results in an +error, despite the detection saying otherwise. +

      +Given that std::atomic<T> already requires T to be complete anyhow +(32.5.8.1 [atomics.types.generic.general] checks for various type properties +which require completeness) it would be more appropriate to use a +constraint instead, so that std::atomic<T> is default constructible if +and only if T also is. +

      + +

      [2024-11-13; Reflector poll]

      + +

      +Set status to Tentatively Ready after seven votes in favour during reflector poll. +

      + + + +

      Proposed resolution:

      +

      +This wording is relative to N4993. +

      + +
        +
      1. Modify 32.5.8.2 [atomics.types.operations] as indicated:

        + +
        +

        +[Drafting note: There is implementation divergence at the moment; libstdc++ already +implements the proposed resolution and has done so for a while.] +

        +
        + +
        +
        +constexpr atomic() noexcept(is_nothrow_default_constructible_v<T>);
        +
        +
        +

        +-1- ConstraintsMandates: is_default_constructible_v<T> is true. +

        +-2- Effects: […] +

        +
        +
        + +
      2. +
      + + + + +
      +

      4170(i). contiguous_iterator should require to_address(I{})

      +

      Section: 24.3.4.14 [iterator.concept.contiguous] Status: Tentatively Ready + Submitter: Casey Carter Opened: 2024-11-01 Last modified: 2024-11-13

      +

      Priority: Not Prioritized +

      +

      View all other issues in [iterator.concept.contiguous].

      +

      View all issues with Tentatively Ready status.

      +

      Discussion:

      +

      +The design intent of the contiguous_iterator concept is that iterators can be converted +to pointers denoting the same sequence of elements. This enables a common range [i, j) +or counted range i + [0, n) to be processed with extremely efficient low-level C +or assembly code that operates on [to_address(i), to_address(j)) (respectively +to_address(i) + [0, n)). +

      +A value-initialized iterator I{} can be used to denote the empty ranges [I{}, I{}) +and I{} + [0, 0). While the existing semantic requirements of contiguous_iterator enable us +to convert both dereferenceable and past-the-end iterators with to_address, converting +ranges involving value-initialized iterators to pointer ranges additionally needs +to_address(I{}) to be well-defined. Note that to_address is already implicitly +equality-preserving for contiguous_iterator arguments. Given this additional requirement +to_address(I{}) == to_address(I{}) and to_address(I{}) == to_address(I{)) + 0 +both hold, so the two types of empty ranges involving value-initialized iterators convert +to empty pointer ranges as desired. +

      + +

      [2024-11-13; Reflector poll]

      + +

      +Set status to Tentatively Ready after eight votes in favour during reflector poll. +

      + + + +

      Proposed resolution:

      +

      +This wording is relative to N4993. +

      + +
        +
      1. Modify 24.3.4.14 [iterator.concept.contiguous] as indicated:

        + +
        +

        +-1- The contiguous_iterator concept provides a guarantee that the denoted elements are stored contiguously +in memory. +

        +
        +
        +template<class I>
        +  concept contiguous_iterator =
        +    random_access_iterator<I> &&
        +    derived_from<ITER_CONCEPT(I), contiguous_iterator_tag> &&
        +    is_lvalue_reference_v<iter_reference_t<I>> &&
        +    same_as<iter_value_t<I>, remove_cvref_t<iter_reference_t<I>>> &&
        +    requires(const I& i) {
        +      { to_address(i) } -> same_as<add_pointer_t<iter_reference_t<I>>>;
        +    };
        +
        +
        +

        +-2- Let a and b be dereferenceable iterators and c be a non-dereferenceable iterator of type +I such that b is reachable from a and c is reachable from b, and let D be +iter_difference_t<I>. The type I models contiguous_iterator only if +

        + +
          +
        1. (2.1) — to_address(a) == addressof(*a),

        2. +
        3. (2.2) — to_address(b) == to_address(a) + D(b - a),

        4. +
        5. (2.3) — to_address(c) == to_address(a) + D(c - a),

        6. +
        7. (2.?) — to_address(I{}) is well-defined,

        8. +
        9. (2.4) — ranges::iter_move(a) has the same type, value category, and effects as +std::move(*a), and

        10. +
        11. (2.5) — if ranges::iter_swap(a, b) is well-formed, it has effects equivalent to +ranges::swap(*a, *b).

        12. +
        +
        + +
      2. +
      + + + + diff --git a/lwg-toc.html b/lwg-toc.html index a748f6fd34..520cd94b84 100644 --- a/lwg-toc.html +++ b/lwg-toc.html @@ -59,7 +59,7 @@

      Table of Contents

      Reference ISO/IEC IS 14882:2024(E)

      This document is the Table of Contents for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Issue
      4144(i)New20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      3911(i) New 20.3.1.3.5 [unique.ptr.single.observers]
      4170(i)New24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      4171(i) New 24.3.6.3 [indirectcallable.indirectinvocable]
      4169(i)New32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      3047(i) New
      @@ -33249,8 +33249,8 @@

      Table of Contents

      - - + + @@ -33476,8 +33476,8 @@

      Table of Contents

      - - + + @@ -33485,8 +33485,8 @@

      Table of Contents

      - - + + diff --git a/lwg-unresolved.html b/lwg-unresolved.html index 0147d1a579..bfcf93a79e 100644 --- a/lwg-unresolved.html +++ b/lwg-unresolved.html @@ -54,7 +54,7 @@ -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Unresolved Issues


      423(i). Effects of negative streamsize in iostreams

      @@ -62099,108 +62099,6 @@

      41434144(i). Disallow unique_ptr<T&, D>

      -

      Section: 20.3.1.3.1 [unique.ptr.single.general] Status: New - Submitter: Jonathan Wakely Opened: 2024-08-30 Last modified: 2024-08-31

      -

      Priority: Not Prioritized -

      -

      View all other issues in [unique.ptr.single.general].

      -

      View all issues with New status.

      -

      Discussion:

      -

      -It seems that we currently allow nonsensical specializations of unique_ptr -such as unique_ptr<int&, D> -and unique_ptr<void()const, D> -(a custom deleter that defines D::pointer is needed, because otherwise -the pointer type would default to invalid types like -int&* or void(*)()const). -There seems to be no reason to support these "unique pointer to reference" -and "unique pointer to abominable function type" specializations, -or any specialization for a type that you couldn't form a raw pointer to. -

      - -

      -Prior to C++17, the major library implementations rejected such specializations -as a side effect of the constraints for the -unique_ptr(auto_ptr<U>&&) constructor -being defined in terms of is_convertible<U*, T*>. -This meant that overload resolution for any constructor of unique_ptr -would attempt to form the type T* and fail if that was invalid. -With the removal of auto_ptr in C++17, that constructor was removed -and now unique_ptr<int&, D> can be instantiated -(assuming any zombie definition of auto_ptr is not enabled by the library). -This wasn't intentional, but just an accident caused by not explicitly -forbidding such types. -

      - -

      -Discussion on the LWG reflector led to near-unanimous support for explicitly -disallowing these specializations for non-pointable types. -

      - - -

      Proposed resolution:

      -

      -This wording is relative to N4988. -

      - -
        -
      1. Modify 20.3.1.3.1 [unique.ptr.single.general] as indicated:

        -
        -

        -?- -A program that instantiates the definition of -unique_ptr<T, D> -is ill-formed if T* is an invalid type. -
        -[Note: -This prevents the intantiation of specializations such as -unique_ptr<T&, D> -and unique_ptr<int() const, D>. -— end note] -
        -

        -

        -1- -The default type for the template parameter D is default_delete. -A client-supplied template argument D shall be a function object type -(22.10 [function.objects]), lvalue reference to function, -or lvalue reference to function object type for which, -given a value d of type D and a value ptr of type -unique_ptr<T, D>::pointer, -the expression d(ptr) is valid and has the effect of disposing of the pointer -as appropriate for that deleter. -

        -

        -2- -If the deleter’s type D is not a reference type, -D shall meet the Cpp17Destructible requirements (Table 35). -

        -

        -3- -If the qualified-id remove_reference_t<D>::pointer -is valid and denotes a type (13.10.3 [temp.deduct]), -then unique_ptr<T, D>::pointer -shall be a synonym for remove_reference_t<D>::pointer. -Otherwise unique_ptr<T, D>::pointer shall be a synonym for -element_type*. -The type unique_ptr<T, D>::pointer shall meet the -Cpp17NullablePointer requirements (Table 36). -

        -

        -4- -[Example 1: - Given an allocator type X (16.4.4.6.1 [allocator.requirements.general]) -and letting A be a synonym for allocator_traits<X>, -the types A::pointer, A::const_pointer, A::void_pointer, -and A::const_void_pointer may be used as -unique_ptr<T, D>::pointer. -— end example] -

        -
        -
      2. -
      - - - - -

      4145(i). Unclear how [res.on.data.races] apply to templated functions

      Section: 16.4.6.10 [res.on.data.races] Status: New @@ -63742,173 +63640,6 @@

      41684169(i). std::atomic<T>'s default constructor should be constrained

      -

      Section: 32.5.8.2 [atomics.types.operations] Status: New - Submitter: Giuseppe D'Angelo Opened: 2024-10-15 Last modified: 2024-10-31

      -

      Priority: Not Prioritized -

      -

      View other active issues in [atomics.types.operations].

      -

      View all other issues in [atomics.types.operations].

      -

      View all issues with New status.

      -

      Discussion:

      -

      -The current wording for std::atomic's default constructor in -32.5.8.2 [atomics.types.operations] specifies: -

      -
      -
      -constexpr atomic() noexcept(is_nothrow_default_constructible_v<T>);
      -
      -
      -

      -Mandates: is_default_constructible_v<T> is true. -

      -
      -
      -

      -This wording has been added by P0883R2 for C++20, which changed -std::atomic's default constructor to always value-initialize. Before, -the behavior of this constructor was not well specified (this was LWG -issue 2334(i)). -

      -The usage of a Mandates element in the specification has as a -consequence that std::atomic<T> is always default constructible, even -when T is not. For instance: -

      -
      -
      -// not default constructible:
      -struct NDC { NDC(int) {} };
      -
      -static_assert(std::is_default_constructible<std::atomic<NDC>>); // OK
      -
      -
      -

      -The above check is OK as per language rules, but this is user-hostile: -actually using std::atomic<NDC>'s default constructor results in an -error, despite the detection saying otherwise. -

      -Given that std::atomic<T> already requires T to be complete anyhow -(32.5.8.1 [atomics.types.generic.general] checks for various type properties -which require completeness) it would be more appropriate to use a -constraint instead, so that std::atomic<T> is default constructible if -and only if T also is. -

      - - -

      Proposed resolution:

      -

      -This wording is relative to N4993. -

      - -
        -
      1. Modify 32.5.8.2 [atomics.types.operations] as indicated:

        - -
        -

        -[Drafting note: There is implementation divergence at the moment; libstdc++ already -implements the proposed resolution and has done so for a while.] -

        -
        - -
        -
        -constexpr atomic() noexcept(is_nothrow_default_constructible_v<T>);
        -
        -
        -

        --1- ConstraintsMandates: is_default_constructible_v<T> is true. -

        --2- Effects: […] -

        -
        -
        - -
      2. -
      - - - - -
      -

      4170(i). contiguous_iterator should require to_address(I{})

      -

      Section: 24.3.4.14 [iterator.concept.contiguous] Status: New - Submitter: Casey Carter Opened: 2024-11-01 Last modified: 2024-11-01

      -

      Priority: Not Prioritized -

      -

      View all other issues in [iterator.concept.contiguous].

      -

      View all issues with New status.

      -

      Discussion:

      -

      -The design intent of the contiguous_iterator concept is that iterators can be converted -to pointers denoting the same sequence of elements. This enables a common range [i, j) -or counted range i + [0, n) to be processed with extremely efficient low-level C -or assembly code that operates on [to_address(i), to_address(j)) (respectively -to_address(i) + [0, n)). -

      -A value-initialized iterator I{} can be used to denote the empty ranges [I{}, I{}) -and I{} + [0, 0). While the existing semantic requirements of contiguous_iterator enable us -to convert both dereferenceable and past-the-end iterators with to_address, converting -ranges involving value-initialized iterators to pointer ranges additionally needs -to_address(I{}) to be well-defined. Note that to_address is already implicitly -equality-preserving for contiguous_iterator arguments. Given this additional requirement -to_address(I{}) == to_address(I{}) and to_address(I{}) == to_address(I{)) + 0 -both hold, so the two types of empty ranges involving value-initialized iterators convert -to empty pointer ranges as desired. -

      - - -

      Proposed resolution:

      -

      -This wording is relative to N4993. -

      - -
        -
      1. Modify 24.3.4.14 [iterator.concept.contiguous] as indicated:

        - -
        -

        --1- The contiguous_iterator concept provides a guarantee that the denoted elements are stored contiguously -in memory. -

        -
        -
        -template<class I>
        -  concept contiguous_iterator =
        -    random_access_iterator<I> &&
        -    derived_from<ITER_CONCEPT(I), contiguous_iterator_tag> &&
        -    is_lvalue_reference_v<iter_reference_t<I>> &&
        -    same_as<iter_value_t<I>, remove_cvref_t<iter_reference_t<I>>> &&
        -    requires(const I& i) {
        -      { to_address(i) } -> same_as<add_pointer_t<iter_reference_t<I>>>;
        -    };
        -
        -
        -

        --2- Let a and b be dereferenceable iterators and c be a non-dereferenceable iterator of type -I such that b is reachable from a and c is reachable from b, and let D be -iter_difference_t<I>. The type I models contiguous_iterator only if -

        - -
          -
        1. (2.1) — to_address(a) == addressof(*a),

        2. -
        3. (2.2) — to_address(b) == to_address(a) + D(b - a),

        4. -
        5. (2.3) — to_address(c) == to_address(a) + D(c - a),

        6. -
        7. (2.?) — to_address(I{}) is well-defined,

        8. -
        9. (2.4) — ranges::iter_move(a) has the same type, value category, and effects as -std::move(*a), and

        10. -
        11. (2.5) — if ranges::iter_swap(a, b) is well-formed, it has effects equivalent to -ranges::swap(*a, *b).

        12. -
        -
        - -
      2. -
      - - - -

      4171(i). P2609R3 breaks code that uses views::zip and get<T>

      Section: 24.3.6.3 [indirectcallable.indirectinvocable] Status: New diff --git a/unresolved-index.html b/unresolved-index.html index e1b331feac..5c9a81800b 100644 --- a/unresolved-index.html +++ b/unresolved-index.html @@ -66,7 +66,7 @@

      Index by Section

      This document is the Index by Section for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      Index by Section

      (view only non-Ready open issues)

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Section 3 (2 issues)

      (view only non-Ready open issues)

      Issue
      4144(i)New4144(i)Tentatively Ready 20.3.1.3.1 [unique.ptr.single.general] Disallow unique_ptr<T&, D> Yes
      4169(i)New4169(i)Tentatively Ready 32.5.8.2 [atomics.types.operations] std::atomic<T>'s default constructor should be constrained Yes
      4170(i)New4170(i)Tentatively Ready 24.3.4.14 [iterator.concept.contiguous] contiguous_iterator should require to_address(I{}) Yes
      @@ -974,7 +974,7 @@

      Section 19 (8 issues)

      -

      Section 20 (23 issues)

      +

      Section 20 (22 issues)

      (view only non-Ready open issues)

      @@ -1086,15 +1086,6 @@

      Section 20 (23 issues)

      - - - - - - - - - @@ -2345,7 +2336,7 @@

      Section 23 (55 issues)

      4144(i)New20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      3911(i) New 20.3.1.3.5 [unique.ptr.single.observers]
      -

      Section 24 (40 issues)

      +

      Section 24 (39 issues)

      (view only non-Ready open issues)

      @@ -2430,15 +2421,6 @@

      Section 24 (40 issues)

      - - - - - - - - - @@ -4850,7 +4832,7 @@

      Section 31 (33 issues)

      4170(i)New24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      484(i) Open 24.3.5.3 [input.iterators]
      -

      Section 32 (40 issues)

      +

      Section 32 (39 issues)

      (view only non-Ready open issues)

      @@ -5043,18 +5025,9 @@

      Section 32 (40 issues)

      - - - - - - - - - - + diff --git a/unresolved-prioritized.html b/unresolved-prioritized.html index 73e5a3ebe3..5cd4eed459 100644 --- a/unresolved-prioritized.html +++ b/unresolved-prioritized.html @@ -60,7 +60,7 @@

      Table of Contents

      This document is the Table of Contents for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List, sorted by priority.

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Priority 1 (2 issues)

      4169(i)New32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      3417(i) SG132.5.8.2 [atomics.types.operations]32.5.8.2 [atomics.types.operations] Missing volatile atomic deprecations Yes 3
      @@ -4666,7 +4666,7 @@

      Priority 4 (73 issues)

      -

      Not Prioritized (60 issues)

      +

      Not Prioritized (57 issues)

      @@ -4759,15 +4759,6 @@

      Not Prioritized (60 issues)

      - - - - - - - - - @@ -4896,15 +4887,6 @@

      Not Prioritized (60 issues)

      - - - - - - - - - @@ -5147,15 +5129,6 @@

      Not Prioritized (60 issues)

      - - - - - - - - - diff --git a/unresolved-status-date.html b/unresolved-status-date.html index 31415e96d4..eef84dd65f 100644 --- a/unresolved-status-date.html +++ b/unresolved-status-date.html @@ -67,8 +67,8 @@

      Index by Status and Date

      This document is the Index by Status and Date for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      -

      Revised 2024-11-07 at 13:31:35 UTC -

      New (441 issues)

      +

      Revised 2024-11-13 at 20:39:34 UTC +

      New (438 issues)

      Issue
      4144(i)New20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      4110(i) New 20.3.2.2.2 [util.smartptr.shared.const]
      4170(i)New24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      4171(i) New 24.3.6.3 [indirectcallable.indirectinvocable] 1458
      4169(i)New32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      1488(i) LEWG 32.6 [thread.mutex]
      @@ -89,15 +89,6 @@

      Index by Status and Date

      - - - - - - - - - @@ -107,15 +98,6 @@

      Index by Status and Date

      - - - - - - - - - @@ -354,15 +336,6 @@

      Index by Status and Date

      - - - - - - - - - diff --git a/unresolved-status.html b/unresolved-status.html index 06f58108b9..089ddc3c96 100644 --- a/unresolved-status.html +++ b/unresolved-status.html @@ -62,8 +62,8 @@

      Index by Status and Section

      Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      -

      Revised 2024-11-07 at 13:31:35 UTC -

      New (441 issues)

      +

      Revised 2024-11-13 at 20:39:34 UTC +

      New (438 issues)

      Issue
      4170(i)New24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      4168(i) New 20.2.6 [obj.lifetime]
      4169(i)New32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      4167(i) New
      4144(i)New20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      4120(i) New
      @@ -864,15 +864,6 @@

      Index by Status and Section

      - - - - - - - - - @@ -1803,15 +1794,6 @@

      Index by Status and Section

      - - - - - - - - - @@ -3860,15 +3842,6 @@

      Index by Status and Section

      - - - - - - - - - diff --git a/unresolved-toc.html b/unresolved-toc.html index ebd5a8328c..7789e8c560 100644 --- a/unresolved-toc.html +++ b/unresolved-toc.html @@ -59,7 +59,7 @@

      Table of Contents

      Reference ISO/IEC IS 14882:2024(E)

      This document is the Table of Contents for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Issue
      4144(i)New20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      3911(i) New 20.3.1.3.5 [unique.ptr.single.observers]
      4170(i)New24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      4171(i) New 24.3.6.3 [indirectcallable.indirectinvocable]
      4169(i)New32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      3047(i) New
      @@ -4978,15 +4978,6 @@

      Table of Contents

      - - - - - - - - - @@ -5151,24 +5142,6 @@

      Table of Contents

      - - - - - - - - - - - - - - - - - - diff --git a/votable-index.html b/votable-index.html index fbee0b530b..fa1eb2ca9b 100644 --- a/votable-index.html +++ b/votable-index.html @@ -66,7 +66,7 @@

      Index by Section

      This document is the Index by Section for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      Index by Section

      (view only non-Ready open issues)

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Section 17 (2 issues)

      (view only non-Ready open issues)

      Issue
      4144(i)New20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      4145(i) New 16.4.6.10 [res.on.data.races]
      4169(i)New32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      4170(i)New24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      4171(i) New 24.3.6.3 [indirectcallable.indirectinvocable]
      @@ -98,7 +98,7 @@

      Index by Section

      -

      Section 20 (3 issues)

      +

      Section 20 (4 issues)

      (view only non-Ready open issues)

      @@ -111,6 +111,15 @@

      Section 20 (3 issues)

      + + + + + + + + + @@ -251,6 +260,28 @@

      Section 23 (3 issues)

      Duplicates
      4144(i)Tentatively Ready20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      4148(i) Tentatively Ready 20.3.1.3.5 [unique.ptr.single.observers]
      +

      Section 24 (1 issues)

      +

      (view only non-Ready open issues)

      + + + + + + + + + + + + + + + + + + + +
      IssueStatusSectionTitleProposed ResolutionPriorityDuplicates
      4170(i)Tentatively Ready24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes

      Section 25 (5 issues)

      (view only non-Ready open issues)

      @@ -495,7 +526,8 @@

      Section 31 (2 issues)

      -

      Section 32 (1 issues)

      +

      Section 32 (2 issues)

      +

      (view only non-Ready open issues)

      @@ -507,6 +539,15 @@

      Section 32 (1 issues)

      + + + + + + + + + diff --git a/votable-status-date.html b/votable-status-date.html index eede16fbea..fecbed0e3d 100644 --- a/votable-status-date.html +++ b/votable-status-date.html @@ -67,7 +67,7 @@

      Index by Status and Date

      This document is the Index by Status and Date for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Ready (15 issues)

      Issue Duplicates
      4169(i)Tentatively Ready32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      4154(i) Ready 32.10.10.2 [futures.task.members]
      @@ -217,7 +217,7 @@

      Index by Status and Date

      -

      Tentatively Ready (16 issues)

      +

      Tentatively Ready (19 issues)

      @@ -229,6 +229,33 @@

      Tentatively Ready (16 issues)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/votable-status.html b/votable-status.html index e769330f30..35b5ecb6bf 100644 --- a/votable-status.html +++ b/votable-status.html @@ -62,7 +62,7 @@

      Index by Status and Section

      Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      Ready (15 issues)

      Issue Duplicates
      4144(i)Tentatively Ready20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      4170(i)Tentatively Ready24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      4169(i)Tentatively Ready32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      4088(i) Tentatively Ready 31.7.6.3.5 [ostream.formatted.print]
      @@ -212,7 +212,7 @@

      Index by Status and Section

      -

      Tentatively Ready (16 issues)

      +

      Tentatively Ready (19 issues)

      @@ -242,6 +242,15 @@

      Tentatively Ready (16 issues)

      + + + + + + + + + @@ -316,6 +325,15 @@

      Tentatively Ready (16 issues)

      + + + + + + + + + @@ -369,6 +387,15 @@

      Tentatively Ready (16 issues)

      + + + + + + + + +
      Issue
      4144(i)Tentatively Ready20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      4148(i) Tentatively Ready 20.3.1.3.5 [unique.ptr.single.observers]
      4170(i)Tentatively Ready24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes
      4119(i) Tentatively Ready 25.8.5 [coro.generator.promise]
      4169(i)Tentatively Ready32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      diff --git a/votable-toc.html b/votable-toc.html index 5f6eca1755..6cea056b3f 100644 --- a/votable-toc.html +++ b/votable-toc.html @@ -59,7 +59,7 @@

      Table of Contents

      Reference ISO/IEC IS 14882:2024(E)

      This document is the Table of Contents for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

      -

      Revised 2024-11-07 at 13:31:35 UTC +

      Revised 2024-11-13 at 20:39:34 UTC

      @@ -300,6 +300,15 @@

      Table of Contents

      + + + + + + + + + @@ -353,6 +362,24 @@

      Table of Contents

      + + + + + + + + + + + + + + + + + +
      Issue
      4144(i)Tentatively Ready20.3.1.3.1 [unique.ptr.single.general]Disallow unique_ptr<T&, D>Yes
      4147(i) Tentatively Ready 23.2.4 [sequence.reqmts] 3
      4169(i)Tentatively Ready32.5.8.2 [atomics.types.operations]std::atomic<T>'s default constructor should be constrainedYes
      4170(i)Tentatively Ready24.3.4.14 [iterator.concept.contiguous]contiguous_iterator should require to_address(I{})Yes