History log of /llvm-project/libcxx/include/variant (Results 1 – 25 of 150)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-21-init
# 6f684816 23-Jan-2025 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Use [[clang::no_specializations]] to diagnose invalid user specializations (#118167)

Some templates in the standard library are illegal to specialize for users
(even if the specialization c

[libc++] Use [[clang::no_specializations]] to diagnose invalid user specializations (#118167)

Some templates in the standard library are illegal to specialize for users
(even if the specialization contains user-defined types). The [[clang::no_specializations]]
attribute allows marking such base templates so that the compiler will
diagnose if users try adding a specialization.

show more ...


Revision tags: llvmorg-19.1.7
# f6958523 08-Jan-2025 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Put _LIBCPP_NODEBUG on all internal aliases (#118710)

This significantly reduces the amount of debug information generated
for codebases using libc++, without hurting the debugging experie

[libc++] Put _LIBCPP_NODEBUG on all internal aliases (#118710)

This significantly reduces the amount of debug information generated
for codebases using libc++, without hurting the debugging experience.

show more ...


# b9a2658a 21-Dec-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++][C++03] Use `__cxx03/` headers in C++03 mode (#109002)

This patch implements the forwarding to frozen C++03 headers as
discussed in
https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-

[libc++][C++03] Use `__cxx03/` headers in C++03 mode (#109002)

This patch implements the forwarding to frozen C++03 headers as
discussed in
https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the
RFC, we initially proposed selecting the right headers from the Clang
driver, however consensus seemed to steer towards handling this in the
library itself. This patch implements that direction.

At a high level, the changes basically amount to making each public
header look like this:

```
// inside <vector>
#ifdef _LIBCPP_CXX03_LANG
# include <__cxx03/vector>
#else
// normal <vector> content
#endif
```

In most cases, public headers are simple umbrella headers so there isn't
much code in the #else branch. In other cases, the #else branch contains
the actual implementation of the header.

show more ...


Revision tags: llvmorg-19.1.6
# 59890c13 17-Dec-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Granularize <new> includes (#119964)


# 6157dbe4 14-Dec-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Introduce __forward_as (#118168)

This allows forwarding an object as a specific type. This is usually
useful when using `deducing this` to avoid calling any functions in a
deriving class.


# c166a9c7 10-Dec-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Add #if 0 block to all the top-level headers (#119234)

Including The frozen C++03 headers results in a lot of formatting
changes in the main headers, so this splits these changes into a
sep

[libc++] Add #if 0 block to all the top-level headers (#119234)

Including The frozen C++03 headers results in a lot of formatting
changes in the main headers, so this splits these changes into a
separate commit instead.

This is part of
https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc.

show more ...


Revision tags: llvmorg-19.1.5, llvmorg-19.1.4
# 2c10664a 10-Nov-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++][NFC] Merge add_{const, cv, volatile}.h into a single header (#115610)

There isn't much benefit in having granular headers for only a few
simple lines of code.


# de87dda2 04-Nov-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++][NFC] Use more appropriate type traits for a few cases (#114025)


# e99c4906 31-Oct-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Granularize <cstddef> includes (#108696)


Revision tags: llvmorg-19.1.3, llvmorg-19.1.2
# ba87515f 12-Oct-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++][RFC] Always define internal feature test macros (#89178)

Currently, the library-internal feature test macros are only defined if
the feature is not available, and always have the prefix
`

[libc++][RFC] Always define internal feature test macros (#89178)

Currently, the library-internal feature test macros are only defined if
the feature is not available, and always have the prefix
`_LIBCPP_HAS_NO_`. This patch changes that, so that they are always
defined and have the prefix `_LIBCPP_HAS_` instead. This changes the
canonical use of these macros to `#if _LIBCPP_HAS_FEATURE`, which means
that using an undefined macro (e.g. due to a missing include) is
diagnosed now. While this is rather unlikely currently, a similar change
in `<__configuration/availability.h>` caught a few bugs. This also
improves readability, since it removes the double-negation of `#ifndef
_LIBCPP_HAS_NO_FEATURE`.

The current patch only touches the macros defined in `<__config>`. If
people are happy with this approach, I'll make a follow-up PR to also
change the macros defined in `<__config_site>`.

show more ...


Revision tags: llvmorg-19.1.1, llvmorg-19.1.0
# 09e3a360 16-Sep-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++][modules] Fix missing and incorrect includes (#108850)

This patch adds a large number of missing includes in the libc++ headers
and the test suite. Those were found as part of the effort to

[libc++][modules] Fix missing and incorrect includes (#108850)

This patch adds a large number of missing includes in the libc++ headers
and the test suite. Those were found as part of the effort to move
towards a mostly monolithic top-level std module.

show more ...


# 04d3a6be 12-Sep-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++][modules] Add a header to forward-declare std::get (#108285)

This is necessary because e.g. ranges::elements_view uses std::get but
it needs to have in scope the declaration of all the vers

[libc++][modules] Add a header to forward-declare std::get (#108285)

This is necessary because e.g. ranges::elements_view uses std::get but
it needs to have in scope the declaration of all the versions of
std::get that exist in the library. This need is what had originally led
to elements_view.h gaining an include of __fwd/complex.h, but in reality
it is a more general issue that requires a canonical declration point
for all the std::get variations.

show more ...


# 748023dc 11-Sep-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++][NFC] Replace _LIBCPP_NORETURN and TEST_NORETURN with [[noreturn]] (#80455)

`[[__noreturn__]]` is now always available, so we can simply use the
attribute directly instead of through a macr

[libc++][NFC] Replace _LIBCPP_NORETURN and TEST_NORETURN with [[noreturn]] (#80455)

`[[__noreturn__]]` is now always available, so we can simply use the
attribute directly instead of through a macro.

show more ...


# eb0f1218 06-Sep-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++][modules] Tweak a few includes (#107467)

Add a few missing includes, remove two unnecessary ones and use
__cstddef/size_t.h instead of <cstddef> in a few places. This is a
collection of mi

[libc++][modules] Tweak a few includes (#107467)

Add a few missing includes, remove two unnecessary ones and use
__cstddef/size_t.h instead of <cstddef> in a few places. This is a
collection of miscellaneous findings that collectively unblock other
modularization patches.

show more ...


Revision tags: llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init
# e2c2ffbe 18-Jun-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++][NFC] Run clang-format on libcxx/include again (#95874)

As time went by, a few files have become mis-formatted w.r.t.
clang-format. This was made worse by the fact that formatting was not

[libc++][NFC] Run clang-format on libcxx/include again (#95874)

As time went by, a few files have become mis-formatted w.r.t.
clang-format. This was made worse by the fact that formatting was not
being enforced in extensionless headers. This commit simply brings all
of libcxx/include in-line with clang-format again.

We might have to do this from time to time as we update our clang-format
version, but frankly this is really low effort now that we've formatted
everything once.

show more ...


# 1ba8ed0c 17-Jun-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Mark more types as trivially relocatable (#89724)

Co-authored-by: Louis Dionne <ldionne.2@gmail.com>


Revision tags: llvmorg-18.1.8, llvmorg-18.1.7
# 04f01a2b 29-May-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Make the __availability header a sub-header of __config (#93083)

In essence, this header has always been related to configuration of
the library but we didn't want to put it inside <__conf

[libc++] Make the __availability header a sub-header of __config (#93083)

In essence, this header has always been related to configuration of
the library but we didn't want to put it inside <__config> due to
complexity reasons. Now that we have sub-headers in <__config>, we
can move <__availability> to it and stop including it everywhere since
we already obtain the required macros via <__config>.

show more ...


Revision tags: llvmorg-18.1.6
# 52271a5c 10-May-2024 Hui <hui.xie1990@gmail.com>

[libc++] Make `constexpr std::variant`. Implement P2231R1 (#83335)

Fixes #86686


Revision tags: llvmorg-18.1.5
# 584a9bfa 25-Apr-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Reorganize the std::variant macros (#89419)

std::variant uses multiple macros to generate special member functions.
These macros were very subtle to read because of e.g. a macro argument

[libc++] Reorganize the std::variant macros (#89419)

std::variant uses multiple macros to generate special member functions.
These macros were very subtle to read because of e.g. a macro argument
appearing in the middle of a macro-ized class definition. In conjunction
with clang-format, this could lead to extremely subtle macro expansions
that were not easy to parse for humans.

By adding semi-colons in macro expansions in judicious places,
clang-format does a better job and makes these macros a lot easier to
read.

As a drive-by fix, I noticed that several of these functions were
missing HIDE_FROM_ABI annotations, so I added them.

show more ...


# ab225044 19-Apr-2024 Krystian Stasiowski <sdkrystian@gmail.com>

[libc++] Fix usage of 'exclude_from_explicit_instantiation' attribute on local class members (#89377)

#88777 adds a warning for when the `exclude_from_explicit_instantiation`
attribute is applied t

[libc++] Fix usage of 'exclude_from_explicit_instantiation' attribute on local class members (#89377)

#88777 adds a warning for when the `exclude_from_explicit_instantiation`
attribute is applied to local classes and members thereof. This patch
addresses the few instances of `exclude_from_explicit_instantiation`
being applied to local class members in libc++.

show more ...


Revision tags: llvmorg-18.1.4, llvmorg-18.1.3
# 1679b279 01-Apr-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Refactor __tuple_like and __pair_like (#85206)

The exposition-only type trait `pair-like` includes `ranges::subrange`,
but in every single case excludes `ranges::subrange` from the list. T

[libc++] Refactor __tuple_like and __pair_like (#85206)

The exposition-only type trait `pair-like` includes `ranges::subrange`,
but in every single case excludes `ranges::subrange` from the list. This
patch introduces two new traits `__tuple_like_no_subrange` and
`__pair_like_no_subrange`, which exclude `ranges::subrange` from the
possible matches. `__pair_like` is no longer required, and thus removed.
`__tuple_like` is implemented as `__tuple_like_no_subrange` or a
`ranges::subrange` specialization.

show more ...


Revision tags: llvmorg-18.1.2
# 580f6048 18-Mar-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++][NFC] Merge is{,_nothrow,_trivially}{,_copy,_move,_default}{_assignable,_constructible} (#85308)

These headers have become very small by using compiler builtins, often
containing only two d

[libc++][NFC] Merge is{,_nothrow,_trivially}{,_copy,_move,_default}{_assignable,_constructible} (#85308)

These headers have become very small by using compiler builtins, often
containing only two declarations. This merges these headers, since
there doesn't seem to be much of a benefit keeping them separate.

Specifically, `is_{,_nothrow,_trivially}{assignable,constructible}` are
kept and the `copy`, `move` and `default` versions of these type traits
are moved in to the respective headers.

show more ...


# 95c1313f 14-Mar-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Remove a few includes from <__functional/hash.h> (#83254)

This also moves `__all` from `sfinae_helpers.h` to `conjunction.h`.


# 9e406ef4 13-Mar-2024 Louis Dionne <ldionne.2@gmail.com>

[libc++] Remove _LIBCPP_ENABLE_NARROWING_CONVERSIONS_IN_VARIANT (#83928)

This was slated for removal in LLVM 19.


# 2a385514 11-Mar-2024 Nikolas Klauser <nikolasklauser@berlin.de>

[libc++] Remove <tuple> from <variant> (#83183)

This moves a utility from `<tuple>` into an implementation detail header
and refactors the selection of the variant index type to use.


123456