# libc++ Upcoming Meeting Status

# libc++ Issaquah Status

This is a temporary page; please check the c++1z status here

This page shows the status of the papers and issues that are expected to be adopted in Issaquah.

The groups that have contributed papers:

- LWG - Library working group
- CWG - Core Language Working group
- SG1 - Study group #1 (Concurrency working group)

### Paper Status

Paper # | Group | Paper Name | Meeting | Status | First released version
--- | --- | --- | --- | --- | ---

### Library Working group Issues Status

Issue # | Issue Name | Meeting | Status
--- | --- | --- | ---
2062 | Effect contradictions w/o no-throw guarantee of std::function swaps | Issaquah | Nothing to do.
2166 | Heap property underspecified? | Issaquah |
2221 | No formatted output operator for nullptr | Issaquah | Patch ready
2223 | shrink_to_fit effect on iterator validity | Issaquah | Nothing to do.
2261 | Are containers required to use their 'pointer' type internally? | Issaquah |
2394 | locale::name specification unclear - what is implementation-defined? | Issaquah | Nothing to do.
2460 | LWG issue 2408 and value categories | Issaquah | Nothing to do.
2468 | Self-move-assignment of library types | Issaquah |
2475 | Allow overwriting of std::basic_string terminator with charT() to allow cleaner interoperation with legacy APIs | Issaquah | Nothing to do.
2503 | multiline option should be added to syntax_option_type | Issaquah |
2510 | Tag types should not be DefaultConstructible | Issaquah |
2514 | Type traits must not be final | Issaquah | Nothing to do
2519 | Iterator operator-= has gratuitous undefined behaviour | Issaquah | Nothing to do
2531 | future::get should explicitly state that the shared state is released | Issaquah |
2534 | Constrain rvalue stream operators | Issaquah |
2536 | What should <complex.h> do? | Issaquah | We already do this
2540 | unordered_multimap::insert hint iterator | Issaquah | We already do this
2543 | LWG 2148 (hash support for enum types) seems under-specified | Issaquah | We already do this
2544 | istreambuf_iterator(basic_streambuf<charT, traits>* s) effects unclear when s is 0 | Issaquah | We already do this
2556 | Wide contract for future::share() | Issaquah | Patch ready
2562 | Consistent total ordering of pointers by comparison functors | Issaquah |
2567 | Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits | Issaquah | Nothing to do.
2569 | conjunction and disjunction requirements are too strict | Issaquah | Nothing to do.
2570 | [fund.ts.v2] conjunction and disjunction requirements are too strict | Issaquah |
2578 | Iterator requirements should reference iterator traits | Issaquah | Nothing to do
2584 | <regex> ECMAScript IdentityEscape is ambiguous | Issaquah |
2589 | match_results can't satisfy the requirements of a container | Issaquah | Nothing to do
2591 | std::function's member template target() should not lead to undefined behaviour | Issaquah |
2598 | addressof works on temporaries | Issaquah | Patch ready
2664 | operator/ (and other append) semantics not useful if argument has root | Issaquah | Nothing to do
2665 | remove_filename() post condition is incorrect | Issaquah | See Below
2672 | Should is_empty use error_code in its specification? | Issaquah | We already do this
2678 | std::filesystem enum classes overspecified | Issaquah | Nothing to do
2679 | Inconsistent Use of Effects and Equivalent To | Issaquah | Nothing to do
2680 | Add "Equivalent to" to filesystem | Issaquah | Nothing to do
2681 | filesystem::copy() cannot copy symlinks | Issaquah | We already do this
2682 | filesystem::copy() won't create a symlink to a directory | Issaquah | Implemented in trunk
2686 | Why is std::hash specialized for error_code, but not error_condition? | Issaquah | Patch ready
2694 | Application of LWG 436 accidentally deleted definition of "facet" | Issaquah | Nothing to do
2696 | Interaction between make_shared and enable_shared_from_this is underspecified | Issaquah |
2699 | Missing restriction in [numeric.requirements] | Issaquah |
2712 | copy_file(from, to, ...) has a number of unspecified error conditions | Issaquah | Implemented in trunk
2722 | equivalent incorrectly specifies throws clause | Issaquah | We already do this
2729 | Missing SFINAE on std::pair::operator= | Issaquah |
2732 | Questionable specification of path::operator/= and path::append | Issaquah | Nothing to do
2733 | [fund.ts.v2] gcd / lcm and bool | Issaquah |
2735 | std::abs(short), std::abs(signed char) and others should return int instead of double in order to be compatible with C++98 and C | Issaquah |
2736 | nullopt_t insufficiently constrained | Issaquah |
2738 | is_constructible with void types | Issaquah | We already do this
2739 | Issue with time_point non-member subtraction with an unsigned duration | Issaquah | Patch Ready
2740 | constexpr optional<T>::operator-> | Issaquah | We already do this
2742 | Inconsistent string interface taking string_view | Issaquah | Patch Ready
2744 | any's in_place constructors | Issaquah | Implemented in trunk
2745 | [fund.ts.v2] Implementability of LWG 2451 | Issaquah |
2747 | Possibly redundant std::move in [alg.foreach] | Issaquah | Patch ready
2748 | swappable traits for optionals | Issaquah | We already do this
2749 | swappable traits for variants | Issaquah |
2750 | [fund.ts.v2] LWG 2451 conversion constructor constraint | Issaquah |
2752 | "Throws:" clauses of async and packaged_task are unimplementable | Issaquah |
2753 | Optional's constructors and assignments need constraints | Issaquah | We already do this
2754 | The in_place constructors and emplace functions added by P0032R3 don't require CopyConstructible | Issaquah | We already do this
2755 | §[string.view.io] uses non-existent basic_string_view::to_string function | Issaquah | We already do this
2756 | C++ WP optional<T> should 'forward' T's implicit conversions | Issaquah | Implemented in trunk
2758 | std::string{}.assign("ABCDE", 0, 1) is ambiguous | We already do this |
2759 | gcd / lcm and bool for the WP | Issaquah | Patch ready
2760 | non-const basic_string::data should not invalidate iterators | Issaquah | Nothing to do
2765 | Did LWG 1123 go too far? | Issaquah |
2767 | not_fn call_wrapper can form invalid types | Issaquah | We already do this
2768 | any_cast and move semantics | Issaquah | Resolved by LWG 2769
2769 | Redundant const in the return type of any_cast(const any&) | Issaquah | Implemented in trunk
2771 | Broken Effects of some basic_string::compare functions in terms of basic_string_view | Issaquah | We already do this
2773 | Making std::ignore constexpr | Issaquah |
2777 | basic_string_view::copy should use char_traits::copy | Issaquah | Patch Ready
2778 | basic_string_view is missing constexpr | Issaquah |

### Comments about the issues

- 2062 - We already do this; added some tests to make sure we keep doing so.
- 2166 - I suspect that this is just better specification of the existing structure. Probably need more tests for this.
- 2221 - Patch and tests ready
- 2223 - This is just wording cleanup.
- 2261 - Survey our containers to make sure we do this. Ideally, this will result in no code changes.
- 2394 - This is just wording cleanup.
- 2460 - This is just wording cleanup.
- 2468 - I think we already do this; but will need to survey the libray to be sure
- 2475 - Nothing to do here.
- 2503 -
- 2510 - Need to write tests for all the tag types
- 2514 - Nothing to do; We don't mark any of the type traits as final.
- 2519 - This is just wording cleanup.
- 2531 - This should be just wording cleanup.
- 2534 -
- 2536 - We already do this.
- 2540 - We already do this, and have tests for it.
- 2543 -
- 2544 - We already do this; I've added tests to make sure we keep doing so
- 2556 - Patch and tests ready
- 2562 - I suspect that this is just better specification of the existing structure. Probably need more tests for this.
- 2567 - This is just wording cleanup.
- 2569 - This is just wording cleanup.
- 2570 - Same as 2569, but applied to LFTS
- 2578 - This is just wording cleanup.
- 2584 -
- 2589 - This is just wording cleanup.
- 2591 - I suspect that this is just better specification of the existing structure. Probably need more tests for this.
- 2598 - Patch and tests ready
- 2664 - No change needed. _LIBCPP_DEBUG mode tests the new requirements.
- 2665 - PR is incorrect as-is. We implement a modified version
- 2672 - Patch and tests in tree.
- 2678 - No change needed. Mostly wording cleanup.
- 2679 - This is just wording cleanup.
- 2680 - This is just wording cleanup.
- 2681 - LGTM
- 2682 - Current PR is incorrect. A modified version has been implemented
- 2686 - Patch and tests ready
- 2694 - Restoring inadvertently deleted text. No code changes needed.
- 2696 - I suspect that this is just better specification of the existing structure. Probably need more tests for this.
- 2699 - I don't think this requires any code changes; look more closely.
- 2712 - LGTM.
- 2722 - LGTM
- 2729 -
- 2732 - Our implementation is already equivalent.
- 2733 - LFTS; same as 2759
- 2735 - I suspect that this is just better specification of the existing structure. Probably need more tests for this.
- 2736 -
- 2738 - We already do this; I added tests for cv-void
- 2739 - Patch and tests ready
- 2740 - std::optional: The resolution LGTM.
- 2742 - Patch and tests ready
- 2744 - std::any: We already do this. We also check for a decayed in_place_type_t.
- 2745 - std::optional for LFTS -- should be considered for C++17
- 2747 - Patch ready, but I can't think of any way to test it.
- 2748 - std::optional: LGTM.
- 2749 - std::variant
- 2750 - std::optional for LFTS -- should be considered for C++17
- 2752 -
- 2753 - std::optional: LGTM.
- 2754 - std::any: LGTM.
- 2755 - Both string and string_view call a common routine for output; so no code changes needed.
- 2756 - std::optional: Very large change. It is fully implemented and tested.
- 2758 - We already do this.
- 2759 - Patch and tests ready
- 2760 - This is just wording cleanup; no code or test changes needed.
- 2765 - is this just wording cleanup????? I don't think this actually requires code changes.
- 2767 - The test case on the issue is incorrect. See not_fn.pass.cpp for the correct test case.
- 2768 - std::any: There is no PR for this issue. It is resolved by LWG 2769.
- 2769 - std::any: The PR looks good except that `remove_reference_t<remove_cv_t<T>>` should read `remove_cv_t<remove_reference_t<T>>`.
- 2771 - We already do this.
- 2773 -
- 2777 - Patch ready; existing tests should suffice
- 2778 - This is mostly tests.

Last Updated: 10-Oct-2016