<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in type_traits</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>b7aa9c4a - [libc++] Granularize some more type_traits</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#b7aa9c4a</link>
        <description>[libc++] Granularize some more type_traitsReviewed By: ldionne, #libcSpies: libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org/D128948

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Sun, 24 Jul 2022 14:03:12 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>adc0f5b3 - [libc++] Remove dead code and unneeded C++03 specializations from type_traits</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#adc0f5b3</link>
        <description>[libc++] Remove dead code and unneeded C++03 specializations from type_traitsReviewed By: ldionne, #libcSpies: libcxx-commitsDifferential Revision: https://reviews.llvm.org/D128906

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Thu, 30 Jun 2022 12:11:26 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>44c8ef01 - [libc++] Disentangle _If, _Or and _And</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#44c8ef01</link>
        <description>[libc++] Disentangle _If, _Or and _AndReviewed By: ldionne, #libc, EricWFSpies: EricWF, libcxx-commitsDifferential Revision: https://reviews.llvm.org/D127919

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Thu, 30 Jun 2022 10:57:51 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>16719cd0 - [libc++] P2321R2 section [tuple.tuple]. Adding C++23 constructors, assignment operators and swaps to `tuple`</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#16719cd0</link>
        <description>[libc++] P2321R2 section [tuple.tuple]. Adding C++23 constructors, assignment operators and swaps to `tuple`1. for constructors that takes cvref variation of tuple&lt;UTypes...&gt;, thereused to be two SFINAE helper _EnableCopyFromOtherTuple,_EnableMoveFromOtherTuple. And the implementations of these two helpersseem to slightly differ from the spec. But now, we need 4 variations.Instead of adding another two, this change refactored it to a single one_EnableCtrFromUTypesTuple, which directly maps to the spec withoutchanging the C++11 behaviour. However, we need the helper __copy_cvref_tto get the type of std::get&lt;i&gt;(cvref tuple&lt;Utypes...&gt;) for differentcvref, so I made __copy_cvref_t to be available in C++11.2. for constructors that takes variations of std::pair, there used to befour helpers _EnableExplicitCopyFromPair, _EnableImplicitCopyFromPair,_EnableImplicitMoveFromPair, _EnableExplicitMoveFromPair. Instead ofadding another four, this change refactored into two helper_EnableCtrFromPair and _BothImplicitlyConvertible. This also removes theneed to use _nat3. for const member assignment operator, since the requirement is verysimple, I haven&apos;t refactored the old code but instead directly addingthe new c++23 code.4. for const swap, I pretty much copy pasted the non-const version to makethese overloads look consistent5. while doing these change, I found two of the old constructors wasn&apos;tmarked constexpr for C++20 but they should. fixed them and added unittestsReviewed By: #libc, ldionneDifferential Revision: https://reviews.llvm.org/D116621

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Thu, 12 May 2022 12:23:11 +0000</pubDate>
        <dc:creator>Hui Xie &lt;hui.xie1990@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>9dd7ad6f - Revert &quot;[libc++] P2321R2 section [tuple.tuple]. Adding C++23 constructors, assignment operators and swaps to `tuple`&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#9dd7ad6f</link>
        <description>Revert &quot;[libc++] P2321R2 section [tuple.tuple]. Adding C++23 constructors, assignment operators and swaps to `tuple`&quot;When merging the changes of &lt;type_traits&gt; header with the commits onthis header over the last month, several conflicts were mistakenresolved and the wrong branch was picked while resolving conflicts,which leads to CI failure. In order to resolve the conflicts properlywith qualification CI job, this change is reverted.This reverts commit 95733a55b986e73f4d8f5314e0d4557d8ae0b226.

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Thu, 23 Jun 2022 20:54:23 +0000</pubDate>
        <dc:creator>Hui Xie &lt;hui.xie1990@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>95733a55 - [libc++] P2321R2 section [tuple.tuple]. Adding C++23 constructors, assignment operators and swaps to `tuple`</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#95733a55</link>
        <description>[libc++] P2321R2 section [tuple.tuple]. Adding C++23 constructors, assignment operators and swaps to `tuple`1. for constructors that takes cvref variation of tuple&lt;UTypes...&gt;, thereused to be two SFINAE helper _EnableCopyFromOtherTuple,_EnableMoveFromOtherTuple. And the implementations of these two helpersseem to slightly differ from the spec. But now, we need 4 variations.Instead of adding another two, this change refactored it to a single one_EnableCtrFromUTypesTuple, which directly maps to the spec withoutchanging the C++11 behaviour. However, we need the helper __copy_cvref_tto get the type of std::get&lt;i&gt;(cvref tuple&lt;Utypes...&gt;) for differentcvref, so I made __copy_cvref_t to be available in C++11.2. for constructors that takes variations of std::pair, there used to befour helpers _EnableExplicitCopyFromPair, _EnableImplicitCopyFromPair,_EnableImplicitMoveFromPair, _EnableExplicitMoveFromPair. Instead ofadding another four, this change refactored into two helper_EnableCtrFromPair and _BothImplicitlyConvertible. This also removes theneed to use _nat3. for const member assignment operator, since the requirement is verysimple, I haven&apos;t refactored the old code but instead directly addingthe new c++23 code.4. for const swap, I pretty much copy pasted the non-const version to makethese overloads look consistent5. while doing these change, I found two of the old constructors wasn&apos;tmarked constexpr for C++20 but they should. fixed them and added unittestsReviewed By: #libc, ldionneDifferential Revision: https://reviews.llvm.org/D116621

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Thu, 12 May 2022 12:23:11 +0000</pubDate>
        <dc:creator>Hui Xie &lt;hui.xie1990@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>cf927669 - [libc++] Reduces std::to_chars instantiations.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#cf927669</link>
        <description>[libc++] Reduces std::to_chars instantiations.Instead of instantiating all functions called by std::to_chars for theintegral types only instantiate them for 32 and 64 bit integral types.This results in a smaller binary when using different types.In an example using the types: signed char, short, int, long, long long,unsigned char, unsigned short, unsigned int, unsigned long, andunsigned long long this saved 2792 bytes of code size. For libc++.so.1is saves 688 bytes of code size (64-bit Linux).This was discovered while investigating a solution for #52709.Reviewed By: #libc, ldionneDifferential Revision: https://reviews.llvm.org/D128215

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Mon, 20 Jun 2022 16:28:34 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
<item>
        <title>3abaefe6 - [libc++] Granularize some more of &lt;type_traits&gt;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#3abaefe6</link>
        <description>[libc++] Granularize some more of &lt;type_traits&gt;Reviewed By: ldionne, #libcSpies: libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org/D127631

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Mon, 13 Jun 2022 15:36:53 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>13558334 - [libc++] Remove uses of __two in type_traits</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#13558334</link>
        <description>[libc++] Remove uses of __two in type_traitsReviewed By: ldionne, #libcSpies: libcxx-commitsDifferential Revision: https://reviews.llvm.org/D127483

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Fri, 10 Jun 2022 10:42:46 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>1972d1e8 - [libc++] Granularize even more of type_traits</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#1972d1e8</link>
        <description>[libc++] Granularize even more of type_traitsReviewed By: ldionne, #libcSpies: libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org/D126593

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Fri, 10 Jun 2022 08:48:39 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>a29a1a33 - [libc++] Fix conjunction/disjunction and mark a few LWG issues as complete</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#a29a1a33</link>
        <description>[libc++] Fix conjunction/disjunction and mark a few LWG issues as completeFixes #54803Fixes #53133Reviewed By: ldionne, #libcSpies: libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org/D125221

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Fri, 03 Jun 2022 08:31:30 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>30c37fb8 - [libc++] Granularize more of &lt;type_traits&gt;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#30c37fb8</link>
        <description>[libc++] Granularize more of &lt;type_traits&gt;Reviewed By: ldionne, #libcSpies: libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org/D126244

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Thu, 26 May 2022 09:49:01 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>c3a24882 - [libc++] type_traits: use __is_core_convertible in __invokable_r.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#c3a24882</link>
        <description>[libc++] type_traits: use __is_core_convertible in __invokable_r.This fixes incorrect handling of non-moveable types, adding tests for this case.See [issue 55346](https://github.com/llvm/llvm-project/issues/55346).The current implementation is based on is_convertible, which is[defined](https://timsong-cpp.github.io/cppwp/n4659/meta.rel#5) in terms ofvalidity of the following function:```To test() {  return declval&lt;From&gt;();}```But this doesn&apos;t work if To and From are both some non-moveable type, which the[definition](https://timsong-cpp.github.io/cppwp/n4659/conv#3) of implicitconversions says should work due to guaranteed copy elision:```To to = E;  // E has type From```It is this latter definition that is used in the[definition](https://timsong-cpp.github.io/cppwp/n4659/function.objects#func.require-2)of INVOKE&lt;R&gt;. Make __invokable_r use __is_core_convertible, whichcaptures the ability to use guaranteed copy elision, making thedefinition correct for non-moveable types.Fixes llvm/llvm-project#55346.Reviewed By: #libc, philnik, EricWFSpies: EricWF, jloser, ldionne, philnik, libcxx-commitsDifferential Revision: https://reviews.llvm.org/D125300

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Tue, 24 May 2022 08:21:05 +0000</pubDate>
        <dc:creator>Aaron Jacobs &lt;jacobsa@google.com&gt;</dc:creator>
    </item>
<item>
        <title>eebc1fb7 - [libc++] Granularize parts of &lt;type_traits&gt;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#eebc1fb7</link>
        <description>[libc++] Granularize parts of &lt;type_traits&gt;`&lt;type_traits&gt;` is quite a large header, so I&apos;ll granularize it in a few steps.Reviewed By: ldionne, #libcSpies: libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org/D124755

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Fri, 20 May 2022 21:31:13 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>58d9ab70 - [libc++][ranges] Implement ranges::minmax and ranges::minmax_element</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#58d9ab70</link>
        <description>[libc++][ranges] Implement ranges::minmax and ranges::minmax_elementReviewed By: var-const, #libc, ldionneSpies: sstefan1, ldionne, BRevzin, libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org/D120637

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Wed, 13 Apr 2022 20:59:09 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>08920cc0 - [libc++] Add __is_callable type trait and begin granularizing type_traits</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#08920cc0</link>
        <description>[libc++] Add __is_callable type trait and begin granularizing type_traits`__is_callable` is required to ensure that the classic algorithms are only called with functions or functors. I also begin to granularize `&lt;type_traits&gt;`.Reviewed By: ldionne, #libcSpies: libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org/D123114

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Thu, 07 Apr 2022 11:40:53 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>1b9c5f60 - [libc++] Remove redundant __invoke_constexpr functions</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#1b9c5f60</link>
        <description>[libc++] Remove redundant __invoke_constexpr functionsThere are `constexpr` versions for the different `__invoke` functions, which seem to be identical other than begin `constexpr` since C++11 instead of being `constexpr` since C++20.Reviewed By: ldionne, #libcSpies: libcxx-commitsDifferential Revision: https://reviews.llvm.org/D123003

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Wed, 06 Apr 2022 21:10:21 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>13796495 - [libc++] Fix std::is_array&lt;T[0]&gt; and add tests</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#13796495</link>
        <description>[libc++] Fix std::is_array&lt;T[0]&gt; and add testsDifferential Revision: https://reviews.llvm.org/D122810

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Thu, 31 Mar 2022 13:25:31 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>385cc25a - [libc++] Ensure that all public C++ headers include &lt;__assert&gt;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#385cc25a</link>
        <description>[libc++] Ensure that all public C++ headers include &lt;__assert&gt;This patch changes the requirement for getting the declaration of theassertion handler from including &lt;__assert&gt; to including any publicC++ header of the library. Note that C compatibility headers areexcluded because we don&apos;t implement all the C headers ourselves --some of them are taken straight from the C library, like assert.h.It also adds a generated test to check it. Furthermore, this newgenerated test is designed in a way that will make it possible toreplace almost all the existing test-generation scripts with thissystem in upcoming patches.Differential Revision: https://reviews.llvm.org/D122506

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Fri, 25 Mar 2022 16:55:36 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>f900f702 - [libc++] Remove the _LIBCPP_BOOL_CONSTANT macro</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/type_traits#f900f702</link>
        <description>[libc++] Remove the _LIBCPP_BOOL_CONSTANT macroI suspect this is a remnant of the times when we were not comfortableusing Clang&apos;s C++11/14 extensions everywhere, but now we do, so we canuse _BoolConstant instead and get rid of the macro.Differential Revision: https://reviews.llvm.org/D122351

            List of files:
            /llvm-project-15.0.7/libcxx/include/type_traits</description>
        <pubDate>Wed, 23 Mar 2022 21:02:07 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
