Differences between revisions 98 and 99
Revision 98 as of 2017-12-05 11:03:59
Size: 31230
Comment:
Revision 99 as of 2017-12-05 11:05:29
Size: 31228
Comment:
Deletions are marked like this. Additions are marked like this.
Line 117: Line 117:
 * [[https://wg21.link/lwg2221|2221]]. No formatted output operator for `nullptr` See [[http://gcc.gnu.org/PR54043][PR54043]] and [[https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00112.html][partial patch without symbol additions]]  * [[https://wg21.link/lwg2221|2221]]. No formatted output operator for `nullptr` See [[http://gcc.gnu.org/PR54043|PR54043]] and [[https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00112.html|partial patch without symbol additions]]

This page is incomplete -- it currently only lists changes since the Nov 2015 meeting, but there are some issues from previous meetings that we haven't implemented yet

QoI matters

  • Add noexcept to tuple constructors

    • as proposed by Scott's 2017-02-26 proposed resolution for 2899.

Unimplemented changes

Changes from Kona Feb/Mar 2017

  • P0298R3. A byte type definition.

  • 2260. Missing requirement for Allocator::pointer

    • We already rely on this, should be nothing to do.
  • 2768. any_cast and move semantics

  • 2769. Redundant const in the return type of any_cast(const any&)

  • 2781. Contradictory requirements for std::function and std::reference_wrapper

  • 2782. scoped_allocator_adaptor constructors must be constrained

  • 2784. Resolution to LWG 2484 is missing "otherwise, no effects" and is hard to parse

    • Nothing to do
  • 2785. quoted should work with basic_string_view

  • 2786. Annex C should mention shared_ptr changes for array support

    • Nothing to do
  • 2787. §[file_status.cons] doesn't match class definition

  • 2789. Equivalence of contained objects

    • Nothing to do
  • 2794. Missing requirements for allocator pointers

    • Nothing to do
  • 2795. §[global.functions] provides incorrect example of ADL use

    • Nothing to do
  • 2804. Unconditional constexpr default constructor for istream_iterator

    • No change needed
  • 2812. Range access is available with <string_view>

    • No change needed
  • 2824. list::sort should say that the order of elements is unspecified if an exception is thrown

    • No change needed
  • 2826. string_view iterators use old wording

    • No change needed
  • 2834. Resolution LWG 2223 is missing wording about end iterators

    • No change needed
  • 2835. LWG 2536 seems to misspecify <tgmath.h>

    • No change needed?
  • 2837. gcd and lcm should support a wider range of input values

  • 2838. is_literal_type specification needs a little cleanup

    • Nothing to do?
  • 2842. in_place_t check for optional::optional(U&&) should decay U

  • 2850. std::function move constructor does unnecessary work

    • Already works this way
  • 2853. Possible inconsistency in specification of erase in [vector.modifiers]

    • Nothing to do?
  • 2855. std::throw_with_nested("string_literal")

    • Done
  • 2796. tuple should be a literal type

    • Seems to be true already.
  • 2790. Missing specification of istreambuf_iterator::operator->

    • We never implemented the removed operator, should be nothing to do.
  • 2676. Provide filesystem::path overloads for File-based streams

  • P0317R1 (Directory Entry Caching for Filesystem).

  • P0492R2 (Proposed Resolution of C++17 National Body Comments for Filesystems)

  • P0430R2 (File system library on non-POSIX-like operating systems)

  • P0604R0 (Resolving GB 55, US 84, US 85, US 86)

  • P0607R0 (Inline Variables for the Standard Library)

  • P0618R0 (Deprecating <codecvt>)

    • No need to actually do anything
  • P0181R1 "Ordered By Default"

    • Was never implemented, no need to revert anything.
  • P0156R2 (Variadic Lock guard)

  • P0599R1 (noexcept for hash functions)

    • Done?
  • P0433R2 (Integrating template deduction for class templates into the standard library)

  • 2872. Add definition for direct-non-list-initialization US 107

  • 2890. The definition of 'object state' applies only to class types US 111

  • 2866. Incorrect derived classes constraints GB 36

  • 2857. {variant,optional,any}::emplace should return the constructed value r246182

  • 2900. The copy and move constructors of optional are not constexpr US 111 r246556

  • 2806. Base class of bad_optional_access GB 49 r246103

  • 2934. optional<const T> doesn't compare with T r246076

  • 2903. The form of initialization for the emplace-constructors is not specified US 118

  • 2904. Make variant move-assignment more exception safe CH 7

  • 2868. Missing specification of bad_any_cast::what() GB 54

    • No change needed.
  • 2801. Default-constructibility of unique_ptr US 122 r244054

  • 2905. is_constructible_v<unique_ptr<P, D>, P, D const &> should be false when D is not copy constructible US 123

  • 2873. Add noexcept to several shared_ptr related functions US 124

  • 2802. shared_ptr constructor requirements for a deleter US 127

  • 2874. Constructor shared_ptr::shared_ptr(Y*) should be constrained US 125

  • 2875. shared_ptr::shared_ptr(Y* | D | […]) constructors should be constrained US 126

  • 2876. shared_ptr::shared_ptr(const weak_ptr<Y>&) constructor should be constrained US 129

  • 2908. The less-than operator for shared pointers could do more US 135

    • Nothing to do?
  • 2807. std::invoke should use std::is_nothrow_callable GB 53

  • 2861. basic_string should require that charT match traits::char_type US 145

  • 2788. basic_string range mutators unintentionally require a default constructible allocator

  • 2878. Missing DefaultConstructible requirement for istream_iterator default constructor US 153

  • 2921. packaged_task and type-erased allocators US 165

  • 2911. An is_aggregate type trait is needed US 143

  • P0558R1 (Resolving atomic<T> named base class inconsistencies).

    • Nothing to do?
  • P0548R1 (common_type and duration)

Changes from Issaquah Nov 2016

  • 2221. No formatted output operator for nullptr See PR54043 and partial patch without symbol additions

  • 2261. Are containers required to use their 'pointer' type internally?

  • 2503. multiline option should be added to syntax_option_type

  • 2534. Constrain rvalue stream operators

    • naïve attempt to constrain them causes infinite recursion done

  • 2686. Why is std::hash specialized for error_code, but not error_condition?

  • 2749. swappable traits for variants r243120

  • 2759. gcd / lcm and bool for the WP r254736

  • 2770. tuple_size<const T> specialization is not SFINAE compatible and breaks decomposition declarations

  • 2773. Making std::ignore constexpr

  • 2777. basic_string_view::copy should use char_traits::copy

  • 2778. basic_string_view is missing constexpr

    • done
  • P0426R1 Constexpr for std::char_traits

    • done
  • P0403R1 Literal suffixes for basic_string_view

    • done
  • P0505R0 (Wording for GB 50 - constexpr for chrono).

    • done.
  • P0418R2 Fail or succeed: there is no atomic lattice. (This also resolves LWG issue 2445)

  • P0508R0 Wording for GB 58 - structured bindings for node_handles

    • no changes required
  • P0503R0 Correcting library usage of "literal type"

    • no changes required
  • P0414R2 (Merging shared_ptr changes from Library Fundamentals to C++17) and P0497R0 (Fixes to shared_ptr support for arrays).

    • done
  • P0504R0 (Revisiting in-place tag types for any/optional/variant

    • done
  • P0003R5 Removing Deprecated Exception Specifications from C++17

    • no changes required
  • P0510R0 Disallowing references, incomplete types, arrays, and empty variants

    • done
  • P0516R0 Clarify That shared_future's Copy Operations have Wide Contracts

    • done
  • P0509R1 Updating "Restrictions on exception handling"

    • No changes needed
  • P0502R0 Throwing out of a parallel algorithm terminates—but how?

    • Parallel algos not implemented
  • P0517R0 Make future_error Constructible

    • done
  • P0521R0 shared_ptr use_count/unique

    • No changes required
  • P0513R0 Poisoning the Hash (Also resolves LWG 2791 and LWG 2543).

  • P0067R5 Elementary string conversions

    • Only done for integer types, missing floating point support.
  • P0435R1 Resolving LWG Issues re common_type. Resolves LWG issues 2465 and 2763.

Changes from Oulu Jun 2016

  • 2549 Tuple EXPLICIT constructor templates that take tuple parameters end up taking references to temporaries and will create dangling references

  • 2393 std::function's Callable definition is broken

  • 2542 Missing const requirements for associative containers

  • 2436 Comparators for associative containers should always be CopyConstructible

  • 2550 Wording of unordered container's clear() method complexity

  • 2310 Public exposition only member in std::array

  • 2181 Exceptions from seed sequence operations

  • 2328 Rvalue stream extraction should use perfect forwarding

  • 2667 path::root_directory() description is confusing

  • 2669 recursive_directory_iterator effects refers to non-existent functions

  • 2671 Errors in Copy

  • 2673 status() effects cannot be implemented as specified

  • 2670 system_complete refers to undefined variable 'base'

  • 2441 Exact-width atomic typedefs should be provided

  • 2426 Issue about compare_exchange

  • 2309 mutex::lock() should not throw device_or_resource_busy

  • 2710 "Effects: Equivalent to ..." doesn't count "Synchronization:" as determined semantics

  • 2685 shared_ptr deleters must not throw on move construction

  • 2698 Effect of assign() on iterators/pointers/references

  • 2596 vector::data() should use addressof

  • 2684 priority_queue lacking comparator typedef

  • 2689 Parallel versions of std::copy and std::move shouldn't be in order

  • 2688 clamp misses preconditions and has extraneous condition on result

  • 2707 path construction and assignment should have "string_type&&" overloads

  • 2674 Bidirectional iterator requirement on path::iterator is very expensive

  • 2706 Error reporting for recursive_directory_iterator::pop() is under-specified

  • 2683 filesystem::copy() says "no effects"

  • 2555 [fund.ts.v2] No handling for over-aligned types in optional

  • 2451 [fund.ts.v2] optional should 'forward' T's implicit conversions

  • 2573 [fund.ts.v2] std::hash<std::experimental::shared_ptr> does not work for arrays

  • 2551 [fund.ts.v2] "Exception safety" cleanup in library fundamentals required

  • 2516 [fund.ts.v2] Public "exposition only" members in observer_ptr

  • 2509 [fund.ts.v2] any_cast doesn't work with rvalue reference targets and cannot move with a value target

  • 2687 {inclusive,exclusive}_scan misspecified

  • 2704 recursive_directory_iterator's members should require '*this is dereferenceable'

  • 2711 path is convertible from approximately everything under the sun

  • 2725 filesystem::exists(const path&, error_code&) error reporting

  • 2312 tuple's constructor constraints need to be phrased more precisely

  • 2422 std::numeric_limits<T>::is_modulo description: "most machines" errata

  • 2709 offsetof is unnecessarily imprecise

  • 2716 Specification of shuffle and sample disallows lvalue URNGs

  • 2718 Parallelism bug in [algorithms.parallel.exec] p2

  • 2719 permissions function should not be noexcept due to narrow contract

  • 2720 permissions function incorrectly specified for symlinks

  • 2721 remove_all has incorrect post conditions

  • 2723 Do directory_iterator and recursive_directory_iterator become the end iterator upon error?

  • 2724 The protected virtual member functions of memory_resource should be private

  • 2726 [recursive_]directory_iterator::increment(error_code&) is underspecified

  • 2727 Parallel algorithms with constexpr specifier

  • 2728 status(p).permissions() and symlink_status(p).permissions() are not specified

  • p0063r3, C++17 should refer to C11 instead of C99

  • p0175r1, Synopses for the C library

    • nothing to do?
  • p0088r3, Variant: a type-safe union for C++17

  • p0307r2, Making Optional Greater Equal Again

  • p0393r3, Making Variant Greater Equal

  • p0032r3, Homogeneous interface for variant, any and optional

  • p0067r3, Elementary string conversions

  • p0254r2, Integrating std::string_view and std::string

  • p0258R2, has_unique_object_representations

  • p0040r3, Extending memory management tools

  • p0084r2, Emplace Return Type

  • p0302r1, Removing Allocator Support in std::function

  • p0083r3, Splicing Maps and Sets

    • done, but not supported in Debug Mode
  • p0181r1, Ordered by Default

    • change was reverted
  • p0163r0, shared_ptr::weak_type

  • p0209r2, make_from_tuple: apply for construction

  • p0295r0, Adopt Selected Library Fundamentals V2 Components for C++17

  • p0337r0, Delete operator= for polymorphic_allocator

  • p0358r1, Fixes for not_fn

  • p0219r1, Relative Paths for Filesystem

  • p0392r0, Adapting string_view by filesystem paths

  • P0394r4, Hotel Parallelifornia: terminate() for Parallel Algorithms Exception Handling

  • p0336r1, Better Names for Parallel Execution Policies in C++17

  • p0371r1, Temporarily discourage memory_order_consume

    • nothing to do
  • p0346r1, A <random> Nomenclature Tweak

    • nothing to do
  • p0180r2, Reserve a New Library Namespace for Future Standardization

    • nothing to do

Changes from Jacksonville Feb/Mar 2016

  • 2276 Missing requirement on std::promise::set_exception

  • 2523 std::promise synopsis shows two set_value_at_thread_exit()'s for no apparent reason

  • 2537 Constructors for priority_queue taking allocators should call make_heap

  • 2192 Validity and return type of std::abs(0u) is unclear

  • 2450 (greater less greater_equal less_equal)<void> do not yield a total order for pointers

  • 2520 N4089 broke initializing unique_ptr<T[]> from a nullptr

  • 2545 Simplify wording for bind without explicitly specified return type

  • 2557 Logical operator traits are broken in the zero-argument case

  • 2559 Error in LWG 2234's resolution

  • 2560 is_constructible underspecified when applied to a function type

  • 2565 std::function's move constructor should guarantee nothrow for reference_wrappers and function pointers

  • 2566 Requirements on the first template parameter of container adaptors

  • 2571 [map.modifiers]/2 imposes nonsensical requirement on insert(InputIterator, InputIterator)

  • 2572 The remarks for shared_ptr::operator* should apply to cv-qualified void as well

    • nothing to do
  • 2576 istream_iterator and ostream_iterator should use std::addressof

  • 2577 {shared,unique}_lock should use std::addressof

  • 2579 Inconsistency wrt Allocators in basic_string assignment vs. basic_string::assign

  • 2581 Specialization of <type_traits> variable templates should be prohibited

    • nothing to do
  • 2582 [res.on.functions]/2's prohibition against incomplete types shouldn't apply to type traits

  • 2583 There is no way to supply an allocator for basic_string(str, pos)

  • 2585 forward_list::resize(size_type, const value_type&) effects incorrect

  • 2586 Wrong value category used in scoped_allocator_adaptor::construct()

  • 2590 Aggregate initialization for std::array

  • 2522 [fund.ts.v2] Contradiction in set_default_resource specification

  • 2539 [fund.ts.v2] invocation_trait definition definition doesn't work for surrogate call functions

  • 2558 [fund.ts.v2] Logical operator traits are broken in the zero-argument case

  • 2574 [fund.ts.v2] std::experimental::function::operator=(F&&) should be constrained

  • 2575 [fund.ts.v2] experimental::function::assign should be removed

  • P0024R2, The Parallelism TS Should be Standardized.

  • P0226R1, Mathematical Special Functions for C++17, v5.

  • P0220R1, Adopt Library Fundamentals V1 TS Components for C++17 (R1).

    • partially done
  • P0218R0, Adopt the File System TS for C++17.

  • P0033R1, Re-enabling shared_from_this (revision 1).

  • P0005R4, Adopt not_fn from Library Fundamentals 2 for C++17.

  • P0152R1, constexpr atomic::is_always_lock_free.

  • P0185R1, Adding [nothrow-]swappable traits, revision 3.

  • P0253R1, Fixing a design mistake in the searchers interface.

  • P0025R0, An algorithm to "clamp" a value between a pair of boundary values

  • P0154R1, constexpr std::hardware_{constructive,destructive}_interference_size

  • option #2 in P0030R1?, Proposal to Introduce a 3-Argument Overload to std::hypot

  • P0031R0, A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access and apply the resolution of LWG Issue 2296

  • P0272R1, Give 'std::string' a non-const '.data()' member function.

  • P0077R2, is_callable, the missing INVOKE related trait.

Changes from Kona Nov 2015

  • 1169 num_get not fully compatible with strto*

  • 2072 Unclear wording about capacity of temporary buffers

  • 2101 Some transformation types can produce impossible types

  • 2111 Which unexpected/terminate handler is called from the exception handling runtime?

  • 2119 Missing hash specializations for extended integer types

  • 2127 Move-construction with raw_storage_iterator

  • 2133 Attitude to overloaded comma for iterators

  • 2156 Unordered containers' reserve(n) reserves for n-1 elements

  • 2218 Unclear how containers use allocator_traits::construct()

  • 2219 INVOKE-ing a pointer to member with a reference_wrapper as the object expression

  • 2244 Issue on basic_istream::seekg

  • 2250 Follow-up On Library Issue 2207

  • 2259 Issues in 17.6.5.5 rules for member functions

    • nothing to do
  • 2336 is_trivially_constructible/is_trivially_assignable traits are always false

    • nothing to do
  • 2353 std::next is over-constrained r254957

  • 2367 pair and tuple are not correctly implemented for is_constructible with no args

  • 2380 May <cstdlib> provide long ::abs(long) and long long ::abs(long long)?

  • 2384 Allocator's deallocate function needs better specification

  • 2385 function::assign allocator argument doesn't make sense

  • 2435 reference_wrapper::operator()'s Remark should be deleted

  • 2447 Allocators and volatile-qualified value types

  • 2462 std::ios_base::failure is overspecified

  • 2466 allocator_traits::max_size() default behavior is incorrect

  • 2469 Wrong specification of Requires clause of operator[] for map and unordered_map

    • Let's keep this open for a bit. There's otherwise nothing to do, but the code could use a cleanup, like removing the duplication of "if (__i == end() || key_comp()(__k, (*__i).first))" eight times.

  • 2473 basic_filebuf's relation to C FILE semantics

  • (2476 scoped_allocator_adaptor is not assignable

  • 2477 Inconsistency of wordings in std::vector::erase() and std::deque::erase()

    • nothing to do
  • 2483 throw_with_nested() should use is_final

  • 2484 rethrow_if_nested() is doubly unimplementable

  • 2485 get() should be overloaded for const tuple&& r254222

  • 2486 mem_fn() should be required to use perfect forwarding

  • 2487 bind() should be const-overloaded, not cv-overloaded

    • libstdc++ ships the volatile overloads as deprecated extensions
  • 2489 mem_fn() should be noexcept

  • 2492 Clarify requirements for comp

    • nothing to do
  • 2224 Ambiguous status of access to non-live objects

    • nothing to do
  • 2234 assert() should allow usage in constant expressions

  • 2273 regex_match ambiguity

  • 2495 There is no such thing as an Exception Safety element

    • nothing to do
  • P0004R1, Remove Deprecated iostreams aliases.

  • P0006R0, Adopt Type Traits Variable Templates for C++17.

  • P0092R1, Polishing <chrono>.

  • P0007R1, Constant View: A proposal for a std::as_const helper function template.

  • P0156R0, Variadic lock_guard(rev 3).

  • p0074r0, Making std::owner_less more flexible

  • P0013R1, Logical type traits rev 2

  • 2494 [fund.ts.v2] ostream_joiner needs noexcept

  • 2500 [fund.ts.v2] fundts.memory.smartptr.shared.obs/6 should apply to _cv_-unqualified void

  • 2515 [fund.ts.v2] Certain comparison operators of observer_ptr do not match synopsis

  • 2517 [fund.ts.v2] Two propagate_const assignment operators have incorrect return type

  • 2526 [fund.ts] Incorrect precondition for experimental::function::swap

  • n4531, std::rand replacement, revision 3.

  • P0013R1, Logical type traits rev 2

FIXME

Parallel Mode doesn't support move-only types

A number of tests contain the following, which should be addressed by making Parallel Mode C++11-compatible:

  • // XXX FIXME: parallel-mode should deal correctly with moveable-only types
    // per C++0x, at minimum smoothly fall back to serial.

None: LibstdcxxTodo (last edited 2017-12-05 11:05:29 by VilleVoutilainen)