forked from OSchip/llvm-project
[ADT] Remove llvm::make_unique utility.
All uses of llvm::make_unique should have been replaced with std::make_unique. This patch represents the last part of the migration and removes the utility from LLVM. Differential revision: https://reviews.llvm.org/D66259 llvm-svn: 369130
This commit is contained in:
parent
ea0ace75e0
commit
7e106445ef
|
@ -1376,41 +1376,6 @@ void replace(Container &Cont, typename Container::iterator ContIt,
|
|||
// Extra additions to <memory>
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// Implement make_unique according to N3656.
|
||||
|
||||
/// Constructs a `new T()` with the given args and returns a
|
||||
/// `unique_ptr<T>` which owns the object.
|
||||
///
|
||||
/// Example:
|
||||
///
|
||||
/// auto p = make_unique<int>();
|
||||
/// auto p = make_unique<std::tuple<int, int>>(0, 1);
|
||||
template <class T, class... Args>
|
||||
typename std::enable_if<!std::is_array<T>::value, std::unique_ptr<T>>::type
|
||||
make_unique(Args &&... args) {
|
||||
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
|
||||
}
|
||||
|
||||
/// Constructs a `new T[n]` with the given args and returns a
|
||||
/// `unique_ptr<T[]>` which owns the object.
|
||||
///
|
||||
/// \param n size of the new array.
|
||||
///
|
||||
/// Example:
|
||||
///
|
||||
/// auto p = make_unique<int[]>(2); // value-initializes the array with 0's.
|
||||
template <class T>
|
||||
typename std::enable_if<std::is_array<T>::value && std::extent<T>::value == 0,
|
||||
std::unique_ptr<T>>::type
|
||||
make_unique(size_t n) {
|
||||
return std::unique_ptr<T>(new typename std::remove_extent<T>::type[n]());
|
||||
}
|
||||
|
||||
/// This function isn't used and is only here to provide better compile errors.
|
||||
template <class T, class... Args>
|
||||
typename std::enable_if<std::extent<T>::value != 0>::type
|
||||
make_unique(Args &&...) = delete;
|
||||
|
||||
struct FreeDeleter {
|
||||
void operator()(void* v) {
|
||||
::free(v);
|
||||
|
|
|
@ -209,7 +209,7 @@ TEST(FilterIteratorTest, FunctionPointer) {
|
|||
|
||||
TEST(FilterIteratorTest, Composition) {
|
||||
auto IsOdd = [](int N) { return N % 2 == 1; };
|
||||
std::unique_ptr<int> A[] = {make_unique<int>(0), std::make_unique<int>(1),
|
||||
std::unique_ptr<int> A[] = {std::make_unique<int>(0), std::make_unique<int>(1),
|
||||
std::make_unique<int>(2), std::make_unique<int>(3),
|
||||
std::make_unique<int>(4), std::make_unique<int>(5),
|
||||
std::make_unique<int>(6)};
|
||||
|
|
Loading…
Reference in New Issue