From 6d55a21b263d033e335687d26470962ec9dbe876 Mon Sep 17 00:00:00 2001 From: Nikolas Klauser Date: Mon, 5 Feb 2024 17:33:27 +0100 Subject: [PATCH] [libc++] Fix vector --- .../__memory/uninitialized_algorithms.h | 2 +- .../sequences/vector/const_T.compile.pass.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 libcxx/test/libcxx/containers/sequences/vector/const_T.compile.pass.cpp diff --git a/libcxx/include/__memory/uninitialized_algorithms.h b/libcxx/include/__memory/uninitialized_algorithms.h index 9733bb748f665..7e25a5c5fa19b 100644 --- a/libcxx/include/__memory/uninitialized_algorithms.h +++ b/libcxx/include/__memory/uninitialized_algorithms.h @@ -643,7 +643,7 @@ __uninitialized_allocator_relocate(_Alloc& __alloc, _Tp* __first, _Tp* __last, _ __guard.__complete(); std::__allocator_destroy(__alloc, __first, __last); } else { - __builtin_memcpy(__result, __first, sizeof(_Tp) * (__last - __first)); + __builtin_memcpy(const_cast<__remove_const_t<_Tp>*>(__result), __first, sizeof(_Tp) * (__last - __first)); } } diff --git a/libcxx/test/libcxx/containers/sequences/vector/const_T.compile.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/const_T.compile.pass.cpp new file mode 100644 index 0000000000000..62fff96ac5abe --- /dev/null +++ b/libcxx/test/libcxx/containers/sequences/vector/const_T.compile.pass.cpp @@ -0,0 +1,18 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// Make sure that `vector` works + +#include + +void test() { + std::vector v; + v.emplace_back(1); + v.push_back(1); + v.resize(3); +}