diff --git a/DRAFT.md b/DRAFT.md index 032b9de9..0464f776 100644 --- a/DRAFT.md +++ b/DRAFT.md @@ -49,6 +49,13 @@ should not be considered in isolation. * Add a second clarifying example to tagged constructors explanatory text. +* Remove constraint `is_same_v` is `false` on polymorphic constructors + taking `in_place_type_t` and an intializer list. + +* Order `polymorphic` constructor constraints consistently. + +* Remove needless introduction of `UU` in `indirect` constraints. + ## Changes in R12 * Fix `indirect` synopsis to include `explicit` on the default constructor. @@ -1129,8 +1136,8 @@ constexpr indirect& operator=(indirect&& other) noexcept( constexpr indirect& operator=(U&& u); ``` -10. _Constraints_: Where `UU` is `remove_cvref_t`, - * `is_same_v` is `false`, +10. _Constraints_: + * `is_same_v, indirect>` is `false`, * `is_constructible_v` is `true`, and * `is_assignable_v` is `true`. @@ -1487,8 +1494,8 @@ explicit constexpr polymorphic(U&& u); 10. _Constraints_: Where `UU` is `remove_cvref_t`, * `is_same_v` is `false`, * `derived_from` is `true`, - * `is_copy_constructible_v` is `true`, * `is_constructible_v` is `true`, + * `is_copy_constructible_v` is `true`, * `UU` is not a specialization of `in_place_type_t`, and * `is_default_constructible_v` is `true`. @@ -1503,8 +1510,8 @@ explicit constexpr polymorphic(allocator_arg_t, const Allocator& a, U&& u); 12. _Constraints_: Where `UU` is `remove_cvref_t`, * `is_same_v` is `false`, * `derived_from` is `true`, - * `is_copy_constructible_v` is `true`, - * `is_constructible_v` is `true`, and + * `is_constructible_v` is `true`, + * `is_copy_constructible_v` is `true`, and * `UU` is not a specialization of `in_place_type_t`. 13. _Effects_: `alloc` is direct-non-list-initialized with `a`. Constructs @@ -1550,10 +1557,9 @@ explicit constexpr polymorphic(in_place_type_t, 18. _Constraints_: * `is_same_v, U>` is `true`, - * `is_same_v` is `false`, * `derived_from` is `true`, - * `is_copy_constructible_v` is `true`, - * `is_constructible_v&, Us...>` is `true`, and + * `is_constructible_v&, Us...>` is `true`, + * `is_copy_constructible_v` is `true`, and * `is_default_constructible_v` is `true`. 19. _Effects_: Constructs an owned object of type `U` with the arguments @@ -1568,10 +1574,9 @@ explicit constexpr polymorphic(allocator_arg_t, const Allocator& a, 20. _Constraints_: * `is_same_v, U>` is `true`, - * `is_same_v` is `false`, * `derived_from` is `true`, - * `is_copy_constructible_v` is `true`, and - * `is_constructible_v&, Us...>` is `true`. + * `is_constructible_v&, Us...>` is `true`, and + * `is_copy_constructible_v` is `true`. 21. _Effects_: `alloc` is direct-non-list-initialized with `a`. Constructs an owned object of type `U` with the arguments `ilist`,