[all-commits] [llvm/llvm-project] 3f630c: [libc++][ranges] Implement ranges::uninitialized_d...

Konstantin Varlamov via All-commits all-commits at lists.llvm.org
Tue Dec 14 14:12:33 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3f630cff65fc6aa69f951916442a8fb1de11be65
      https://github.com/llvm/llvm-project/commit/3f630cff65fc6aa69f951916442a8fb1de11be65
  Author: Konstantin Varlamov <varconst at apple.com>
  Date:   2021-12-14 (Tue, 14 Dec 2021)

  Changed paths:
    M libcxx/docs/Status/RangesPaper.csv
    M libcxx/include/CMakeLists.txt
    M libcxx/include/__iterator/advance.h
    M libcxx/include/__iterator/next.h
    M libcxx/include/__iterator/prev.h
    A libcxx/include/__memory/ranges_uninitialized_algorithms.h
    M libcxx/include/__memory/uninitialized_algorithms.h
    M libcxx/include/memory
    M libcxx/include/module.modulemap
    A libcxx/test/libcxx/diagnostics/detail.headers/memory/ranges_uninitialized_algorithms.module.verify.cpp
    M libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/special_function.compile.pass.cpp
    M libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/special_function.compile.pass.cpp
    M libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.prev/special_function.compile.pass.cpp
    A libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct.pass.cpp
    A libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/ranges_uninitialized_default_construct_n.pass.cpp
    M libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/uninitialized_default_construct.pass.cpp
    M libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.construct.default/uninitialized_default_construct_n.pass.cpp

  Log Message:
  -----------
  [libc++][ranges] Implement ranges::uninitialized_default_construct{,_n}.

Defined in [`specialized.algorithms`](wg21.link/specialized.algorithms).

Also:
- refactor the existing non-range implementation so that most of it
  can be shared between the range-based and non-range-based algorithms;
- remove an existing test for the non-range version of
  `uninitialized_default_construct{,_n}` that likely triggered undefined
  behavior (it read the values of built-ins after default-initializing
  them, essentially reading uninitialized memory).

Reviewed By: #libc, Quuxplusone, ldionne

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




More information about the All-commits mailing list