| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[libc++][test] Fix MSVC warnings with static_casts (#74962) Found while running libc++'s tests with MSVC's STL. * libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/ranges_unique_copy.pass.cpp + Fix MSVC "warning C4389: '==': signed/unsigned mismatch". + This was x86-specific for me. The LHS is int and the RHS is size_t. We know the array's size, so static_cast<int> is certainly safe, and this matches the following numberOfProj comparisons. * libcxx/test/std/containers/sequences/insert_range_sequence_containers.h + Fix MSVC "warning C4267: 'argument': conversion from 'size_t' to 'const int', possible loss of data". + test_case.index is size_t: https://github.com/llvm/llvm-project/blob/b85f1f9b182234ba366d78ae2174a149e44d08c1/libcxx/test/std/containers/insert_range_helpers.h#L65-L68 + But the container's difference_type is int: https://github.com/llvm/llvm-project/blob/b85f1f9b182234ba366d78ae2174a149e44d08c1/libcxx/test/support/test_allocator.h#L65-L76 + I introduced an alias D to make the long line more readable. * libcxx/test/std/containers/unord/unord.map/eq.different_hash.pass.cpp * libcxx/test/std/containers/unord/unord.multimap/eq.different_hash.pass.cpp * libcxx/test/std/containers/unord/unord.multiset/eq.different_hash.pass.cpp * libcxx/test/std/containers/unord/unord.set/eq.different_hash.pass.cpp + Fix MSVC "warning C6297: Arithmetic overflow. Results might not be an expected value." + This warning is almost annoying enough to outright disable, but we use similar static_casts to deal with sign/truncation warnings elsewhere, because there's some value in ensuring that product code is clean with respect to these warnings. If there were many more occurrences, then disabling the warning would be appropriate. + Cleanup: Change 2 inconsistently unqualified occurrences of size_t to std::size_t. * libcxx/test/std/containers/views/mdspan/layout_stride/index_operator.pass.cpp + Fix MSVC "warning C4244: 'initializing': conversion from '__int64' to 'size_t', possible loss of data". + This was x86-specific for me. The args are indeed int64_t, and we're storing the result in size_t, so we should cast. * libcxx/test/std/ranges/range.utility/range.utility.conv/container.h + Fix MSVC "warning C4244: 'initializing': conversion from 'ptrdiff_t' to 'int', possible loss of data". + Fix MSVC "warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data". + We're initializing int size_, so we should explicitly cast from pointer subtraction and std::ranges::size. * libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared_for_overwrite.pass.cpp * libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared_for_overwrite.pass.cpp * libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.create/make_unique_for_overwrite.default_init.pass.cpp + Fix MSVC "warning C4309: 'initializing': truncation of constant value". + MSVC emits this warning because 0xDE is outside the range of char (signed by default in our implementation). * libcxx/test/support/concat_macros.h + Fix MSVC "warning C4244: 'argument': conversion from 'char16_t' to 'const char', possible loss of data". + Fix MSVC "warning C4244: 'argument': conversion from 'unsigned int' to 'const char', possible loss of data". + This code was very recently introduced by @mordante in #73395. | 2 年前 | |
[libc++][ranges] Implement the changes to vector from P1206 ( ranges::to): - add the from_range_t constructors and the related deduction guides; - add the insert_range/assign_range/etc. member functions. (Note: this patch is split from https://reviews.llvm.org/D142335) Differential Revision: https://reviews.llvm.org/D149826 | 3 年前 | |
[libc++][ranges] LWG3984: ranges::to's recursion branch may be ill-formed (#87964) This pull request implements LWG3984: ranges::to's recursion branch may be ill-formed. In the current implementation, ranges::to's recursion branch pipes the range into a views::transform(/* lambda */), which is a __range_adaptor_closure object. In libc++, the pipe operator of __range_adaptor_closure requires a viewable_range, so the following code won't compile, as the type of lvalue r doesn't model viewable_range: #include <ranges> #include <vector> #include <list> int main() { std::vector<std::vector<int>> v; auto r = std::views::all(std::move(v)); auto l = std::ranges::to<std::list<std::list<int>>>(r); } Co-authored-by: A. Jiang <de34@live.cn> | 2 年前 | |
[libc++] Removes Clang-16 support. (#87810) With the release of Clang-18 we no longer officially support Clang-16. | 2 年前 | |
[libc++][ranges] Implement ranges::to. Differential Revision: https://reviews.llvm.org/D142335 | 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 |