History log of /llvm-project/libcxx/docs/FeatureTestMacroTable.rst (Results 1 – 25 of 141)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-21-init
# def50f70 25-Jan-2025 Hui <hui.xie1990@gmail.com>

[libc++] implement `std::flat_multimap` (#113835)

fixes https://github.com/llvm/llvm-project/issues/105190

---------

Co-authored-by: Hui Xie <huixie@Mac.broadband>
Co-authored-by: Hui Xie <hu

[libc++] implement `std::flat_multimap` (#113835)

fixes https://github.com/llvm/llvm-project/issues/105190

---------

Co-authored-by: Hui Xie <huixie@Mac.broadband>
Co-authored-by: Hui Xie <huixie@Huis-MacBook-Pro.local>

show more ...


Revision tags: llvmorg-19.1.7
# c91d805e 10-Jan-2025 Jakub Mazurkiewicz <mazkuba3@gmail.com>

[libc++] Implement std::not_fn<NTTP> (#86133)

Implement `std::not_fn<NTTP>` from "P2714R1 Bind front and back to NTTP callables".


Revision tags: llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4
# 76b71c0b 05-Nov-2024 A. Jiang <de34@live.cn>

[libc++] Set `__cpp_lib_smart_ptr_for_overwrite` (#114700)

The features were implemented in LLVM 16, but mistakenly considered
unimplemented in FTM tools.


Revision tags: llvmorg-19.1.3
# cae351f3 25-Oct-2024 A. Jiang <de34@live.cn>

[libc++] Bump `__cpp_lib_optional` and `__cpp_lib_variant` (#113650)

In C++20 mode, `__cpp_lib_optional` and `__cpp_lib_variant` should be
`202106L` due to DR P2231R1.

In C++26 mode, `__cpp_lib_

[libc++] Bump `__cpp_lib_optional` and `__cpp_lib_variant` (#113650)

In C++20 mode, `__cpp_lib_optional` and `__cpp_lib_variant` should be
`202106L` due to DR P2231R1.

In C++26 mode, `__cpp_lib_variant` should be bumped to `202306L` due to
P2637R3.
- Clang 16/17 shouldn't get this bumping (as member `visit` requires
explicit object parameters), but it's very tricky to make the bumping
conditionally enabled. I _hope_ unconditionally bumping in C++26 will be
OK for LLVM 20 when the support for Clang 17 is dropped.

Related PRs:
- https://reviews.llvm.org/D102119
- #83335
- #76447

show more ...


Revision tags: llvmorg-19.1.2
# a06591b4 09-Oct-2024 Hristo Hristov <hghristov.rmm@gmail.com>

[libc++][type_traits] P2674R1: A trait for implicit lifetime types (#106870)

Implements P2674R1: https://wg21.link/P2674R1

- https://eel.is/c++draft/type.traits
- https://eel.is/c++draft/meta.

[libc++][type_traits] P2674R1: A trait for implicit lifetime types (#106870)

Implements P2674R1: https://wg21.link/P2674R1

- https://eel.is/c++draft/type.traits
- https://eel.is/c++draft/meta.type.synop
- https://eel.is/c++draft/meta.unary.prop
- https://eel.is/c++draft/support.limits
- https://eel.is/c++draft/version.syn

Implementation details:
- Uses compiler intrinsic `__builtin_is_implicit_lifetime`:
- https://github.com/llvm/llvm-project/pull/101807
- Tests based on:
-
https://github.com/llvm/llvm-project/blob/d213981c80626698a07b11ce872acba098a863d4/clang/test/SemaCXX/type-traits.cpp#L1989

References:
- Implicit-lifetime
- Implicit-lifetime types [basic.types.general]/9:
https://eel.is/c++draft/basic.types.general
- Implicit-lifetime class [class.prop]/9:
https://eel.is/c++draft/class.prop
- P0593R6 Implicit creation of objects for low-level object
manipulation: https://wg21.link/P0593R6
- P1010R1 Container support for implicit lifetime types:
https://wg21.link/P1010R1
- P0593R6 Implicit creation of objects for low-level object
manipulation: https://wg21.link/P0593R6

Closes: #105259

---------

Co-authored-by: Hristo Hristov <zingam@outlook.com>

show more ...


Revision tags: llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4
# 7808541f 28-Aug-2024 A. Jiang <de34@live.cn>

[libc++] P2747R2: `constexpr` placement new (library part) (#105768)

This patch implements https://wg21.link/P2747R2.

The library changes affect direct `operator new` and `operator new[]`
calls

[libc++] P2747R2: `constexpr` placement new (library part) (#105768)

This patch implements https://wg21.link/P2747R2.

The library changes affect direct `operator new` and `operator new[]`
calls even when the core language changes are absent.

The changes are not available for MS ABI because the `operator new` and
`operator new[]` are from VCRuntime's `<vcruntime_new.h>`. A feature
request was submitted for that [1].

As a drive-by change, the patch reformatted the whole `new.pass.cpp` and
`new_array.pass.cpp` tests.

Closes #105427

[1]: https://developercommunity.visualstudio.com/t/constexpr-for-placement-operator-newope/10730304.

show more ...


# 026210e8 28-Aug-2024 A. Jiang <de34@live.cn>

[libc++][ranges] P2609R3: Relaxing Ranges Just A Smidge (#101715)

This patch implements https://wg21.link/p2609r3.
The test code was originally authored by JMazurkiewicz.

Notes:
- P2609R3 is no

[libc++][ranges] P2609R3: Relaxing Ranges Just A Smidge (#101715)

This patch implements https://wg21.link/p2609r3.
The test code was originally authored by JMazurkiewicz.

Notes:
- P2609R3 is not officially a Defect Report, but MSVC STL
implements it in C++20 mode.

Moreover, P2609R3 and P2997R1 touch exactly the same set of
concepts, and MSVC STL and libc++ have already treated P2997R1
as a DR.

- This patch also adjusted feature-test macros.
+ In C++20 mode, the value of __cpp_lib_ranges should be `202110L` because
- `202202L` covers `range_adaptor_closure` (P2387R3), and
- `202207L` covers move-only types in range adaptors (P2494R2).
And all of these changes are only available since C++23 mode.

+ In C++23 mode, the value should be `202406L` because
- `202211L` covers removing poison overloads (P2602R2),
- `202302L` covers relaxing projected value types (P2609R3), and
- `202406L` covers removing requirements on `iter_common_reference_t` (P2997R1).
And all of these changes are already or being implemented.

Fixes #105253.

Co-authored-by: Jakub Mazurkiewicz <mazkuba3@gmail.com>

show more ...


# 1c48c9cc 26-Aug-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Implement P2985R0: std::is_virtual_base_of (#105847)

This trait is implemented in C++26 conditionally on the compiler
supporting the __builtin_is_virtual_base_of intrinsic. I believe only

[libc++] Implement P2985R0: std::is_virtual_base_of (#105847)

This trait is implemented in C++26 conditionally on the compiler
supporting the __builtin_is_virtual_base_of intrinsic. I believe only
tip-of-trunk Clang currently implements that builtin.

Closes #105432

show more ...


Revision tags: llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1
# 3ce6f68e 25-Jul-2024 Mark de Wever <koraq@xs4all.nl>

[libc++][spaceship] Marks P1614 as complete. (#99375)

Implements parts of:
- P1902R1 Missing feature-test macros 2017-2019

Completes:
- P1614R2 The Mothership has Landed

Fixes #100018


Revision tags: llvmorg-20-init
# 04760bfa 19-Jul-2024 nicole mazzuca <nicole@strega-nil.co>

[libc++][ranges] P1223R5: `find_last` (#99312)

Implements [P1223R5][] completely.

Includes an implementation of `find_last`, `find_last_if`, and
`find_last_if_not`.

[P1223R5]: https://wg21.li

[libc++][ranges] P1223R5: `find_last` (#99312)

Implements [P1223R5][] completely.

Includes an implementation of `find_last`, `find_last_if`, and
`find_last_if_not`.

[P1223R5]: https://wg21.link/p1223r5

show more ...


# e475bb7a 19-Jul-2024 Hristo Hristov <hghristov.rmm@gmail.com>

[libc++][memory] P1132R8: `out_ptr` - a scalable output pointer abstraction (#73618)

Differential Revision: https://reviews.llvm.org/D150525

Implements:
- https://wg21.link/P1132R8 - `out_ptr` -

[libc++][memory] P1132R8: `out_ptr` - a scalable output pointer abstraction (#73618)

Differential Revision: https://reviews.llvm.org/D150525

Implements:
- https://wg21.link/P1132R8 - `out_ptr` - a scalable output pointer
abstraction
- https://eel.is/c++draft/smartptr.adapt - 20.3.4 Smart pointer adaptors
- https://wg21.link/LWG3734 - Inconsistency in `inout_ptr` and `out_ptr`
for empty case
- https://wg21.link/LWG3897- `inout_ptr` will not update raw pointer to
0

---------

Co-authored-by: Hristo Hristov <zingam@outlook.com>

show more ...


# 4a19be5d 18-Jul-2024 Hristo Hristov <hghristov.rmm@gmail.com>

[libc++][strings] P2591R5: Concatenation of strings and string views (#88389)

Implemented: https://wg21.link/P2591R5
- https://eel.is/c++draft/string.syn
- https://eel.is/c++draft/string.op.plus

[libc++][strings] P2591R5: Concatenation of strings and string views (#88389)

Implemented: https://wg21.link/P2591R5
- https://eel.is/c++draft/string.syn
- https://eel.is/c++draft/string.op.plus

---------

Co-authored-by: Hristo Hristov <zingam@outlook.com>

show more ...


# 4e338dce 15-Jul-2024 Xiaoyang Liu <siujoeng.lau@gmail.com>

[libc++] P2389R2: `dextents` Index Type Parameter (#97393)

This patch implements P2389R2, which was adopted at the St. Louis meeting.
It builds upon previous enhancements from P2299R3, which introd

[libc++] P2389R2: `dextents` Index Type Parameter (#97393)

This patch implements P2389R2, which was adopted at the St. Louis meeting.
It builds upon previous enhancements from P2299R3, which introduced deduction
guides and the `dextents` alias template.

show more ...


# deeb9368 10-Jul-2024 Mark de Wever <koraq@xs4all.nl>

[libc++][format] define __cpp_lib_format. (#98275)

In order to define the format __cpp_lib_format to its initial value
(201907) these papers need to be completed:
- P0645R10 Text Formatting
- P16

[libc++][format] define __cpp_lib_format. (#98275)

In order to define the format __cpp_lib_format to its initial value
(201907) these papers need to be completed:
- P0645R10 Text Formatting
- P1652R1 Printf corner cases in std::format
- 1361R2 Integration of chrono with text formatting The first two have
been implemented for a while the latter is almost done.

The next value (202106) requires:
- P2216R3 std::format improvements which has been implemented

The next value (202110) requires:
- P2418R2 Add support for std::generator-like types to std::format
- P2372R3 Fixing locale handling in chrono formatters The first one has
been implemented for a while the latter is almost done. The latter paper
is a DR against 1361R2 and both are implemented at the same time.

We've had user feedback that the missing of the __cpp_lib_format makes
their lives harder (https://github.com/llvm/llvm-project/issues/77773).
The missing papers 1361R2 and P2372R3 are very close to completion and
might completed before LLVM-19, but it will be a close call. This has
been discussed in the monthly libc++ meeting and we decided to set the
__cpp_lib_format so it will be set in LLVM-19.

Based on the discussion and the implementation status the
__cpp_lib_format is set to 202110.

Fixes #77773

show more ...


# e42f760b 09-Jul-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Define the __cpp_lib_atomic_ref feature test macro (#98081)

We forgot to enable it when we landed std::atomic_ref in 42ba740aff.


# 2dadf8d7 08-Jul-2024 Mark de Wever <koraq@xs4all.nl>

[libc++] Update status after the St. Louis meeting. (#97951)

This updates:
- The status tables
- Feature test macros
- New headers for modules


Revision tags: llvmorg-18.1.8
# 759fb590 12-Jun-2024 Mark de Wever <koraq@xs4all.nl>

[libc++][modules] Mark as implemented. (#90091)

The feature has been implemented in LLVM 18 as an experimental feature.
This marks the paper as complete and sets the feature-test macro.

Implemen

[libc++][modules] Mark as implemented. (#90091)

The feature has been implemented in LLVM 18 as an experimental feature.
This marks the paper as complete and sets the feature-test macro.

Implements
- P2465R3 Standard Library Modules std and std.compat

Fixes: https://github.com/llvm/llvm-project/issues/89579

show more ...


# c36961bd 12-Jun-2024 Mark de Wever <koraq@xs4all.nl>

[libc++] Adds __cpp_lib_three_way_comparison FTM. (#91515)

The paper
P0768R1 Library Support for the Spaceship (Comparison) Operator
did not add a feature-test macro. This omission has been corr

[libc++] Adds __cpp_lib_three_way_comparison FTM. (#91515)

The paper
P0768R1 Library Support for the Spaceship (Comparison) Operator
did not add a feature-test macro. This omission has been corrected in
P1353R0 Missing Feature Test Macros

This enables the FTM for P0768R1

Fixes: https://github.com/llvm/llvm-project/issues/73953

---------

Co-authored-by: S. B. Tam <cpplearner@outlook.com>

show more ...


Revision tags: llvmorg-18.1.7
# a4bef0ca 28-May-2024 Stephan T. Lavavej <stl@nuwen.net>

[libc++] Mark P2845R8 `__cpp_lib_format_path` and P2587R3 `__cpp_lib_to_string` as C++26 (#93255)

[P2845R8](https://wg21.link/P2845R8) "Formatting of
`std::filesystem::path`" and [P2587R3](https://

[libc++] Mark P2845R8 `__cpp_lib_format_path` and P2587R3 `__cpp_lib_to_string` as C++26 (#93255)

[P2845R8](https://wg21.link/P2845R8) "Formatting of
`std::filesystem::path`" and [P2587R3](https://wg21.link/P2587R3)
"`to_string` or not `to_string`" are C++26 features, so they should be
marked accordingly in `generate_feature_test_macro_components.py`.

I verified that without my changes, running the script produced no
edits. Then with my changes, I ran the script to regenerate all files,
with no other manual edits.

Found while running libc++'s tests with MSVC's STL, which noticed this
because it's currently a C++23-only implementation.

Note that @H-G-Hristov has a draft implementation of P2587R3: #78100

show more ...


Revision tags: llvmorg-18.1.6
# 8f711aa3 16-May-2024 Mital Ashok <mital@mitalashok.co.uk>

[libc++][test] `__cpp_lib_within_lifetime` -> `__cpp_lib_is_within_lifetime` (#91896)

The feature test macro was renamed when
[P2641R4](https://wg21.link/P2641R4) was adopted into the standard:
ht

[libc++][test] `__cpp_lib_within_lifetime` -> `__cpp_lib_is_within_lifetime` (#91896)

The feature test macro was renamed when
[P2641R4](https://wg21.link/P2641R4) was adopted into the standard:
https://github.com/cplusplus/draft/commit/0facada4cadd97e1ba15bfaea76a804f1dc5c309
https://wg21.link/version.syn#lib:__cpp_lib_is_constant_evaluated

show more ...


# 8afa6cf5 09-May-2024 Hristo Hristov <hghristov.rmm@gmail.com>

[libc++][functional] P2944R3 (partial): Comparisons for `reference_wrapper` (`reference_wrapper` operators only) (#88384)

Implements https://wg21.link/P2944R3 (partially)
Implements https://wg21.li

[libc++][functional] P2944R3 (partial): Comparisons for `reference_wrapper` (`reference_wrapper` operators only) (#88384)

Implements https://wg21.link/P2944R3 (partially)
Implements https://wg21.link/LWG4071 /
https://cplusplus.github.io/LWG/issue4071 (fixes build failures in the
test suite)
- https://eel.is/c++draft/refwrap.comparisons

show more ...


# 028f1b07 04-May-2024 krzysdz <krzysdz@konto.pl>

[libc++] Fix P1206R7 feature test macros (#90914)

- Add missing `__cpp_lib_containers_ranges` feature test macro
- Constrain `__cpp_lib_ranges_to_container` to the `<ranges>` header,
since the sta

[libc++] Fix P1206R7 feature test macros (#90914)

- Add missing `__cpp_lib_containers_ranges` feature test macro
- Constrain `__cpp_lib_ranges_to_container` to the `<ranges>` header,
since the standard does not list it in containers' headers

Ref:
-
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf#section.18
- https://eel.is/c++draft/support.limits#lib:__cpp_lib_containers_ranges
-
https://eel.is/c++draft/support.limits#lib:__cpp_lib_ranges_to_container

show more ...


Revision tags: llvmorg-18.1.5, llvmorg-18.1.4
# c8917048 09-Apr-2024 Jakub Mazurkiewicz <mazkuba3@gmail.com>

[libc++] Implement `bind_back` (#81055)

Implement `std::bind_back` function from P2387R3 "Pipe support for
user-defined range adaptors".


# b699a9ba 03-Apr-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Update status page after the Tokyo meeting (#87395)


Revision tags: llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1
# 80f9458c 05-Mar-2024 Hristo Hristov <hghristov.rmm@gmail.com>

[libc++][sstream] P2495R3: Interfacing `stringstream`s with `string_view` (#80552)

Implements P2495R3 <https://wg21.link/P2495R3>
- https://eel.is/c++draft/version.syn#headerref:%3csstream%3e
- ht

[libc++][sstream] P2495R3: Interfacing `stringstream`s with `string_view` (#80552)

Implements P2495R3 <https://wg21.link/P2495R3>
- https://eel.is/c++draft/version.syn#headerref:%3csstream%3e
- https://eel.is/c++draft/stringbuf
- https://eel.is/c++draft/stringbuf.general
- https://eel.is/c++draft/stringbuf.cons
- https://eel.is/c++draft/stringbuf.members
- https://eel.is/c++draft/istringstream
- https://eel.is/c++draft/istringstream.general
- https://eel.is/c++draft/istringstream.cons
- https://eel.is/c++draft/istringstream.members
- https://eel.is/c++draft/ostringstream
- https://eel.is/c++draft/ostringstream.general
- https://eel.is/c++draft/ostringstream.cons
- https://eel.is/c++draft/ostringstream.members
- https://eel.is/c++draft/stringstream
- https://eel.is/c++draft/stringstream.general
- https://eel.is/c++draft/stringstream.cons
- https://eel.is/c++draft/stringstream.members

References:
- https://eel.is/c++draft/string.streams

show more ...


123456