blob: 8bebeb36fb559c664faebbdfc70e8916d1f87cc8 [file] [log] [blame]
// Copyright 2024 The PDFium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CORE_FXCRT_PTR_UTIL_H_
#define CORE_FXCRT_PTR_UTIL_H_
#include <memory>
#include <type_traits>
namespace pdfium {
// Helper to transfer ownership of a raw pointer to a std::unique_ptr<T>.
// Note that std::unique_ptr<T> has very different semantics from
// std::unique_ptr<T[]>: do not use this helper for array allocations.
template <typename T>
std::unique_ptr<T> WrapUnique(T* ptr) {
static_assert(!std::is_array<T>::value, "array types are unsupported");
static_assert(std::is_object<T>::value, "non-object types are unsupported");
return std::unique_ptr<T>(ptr);
}
} // namespace pdfium
#endif // CORE_FXCRT_PTR_UTIL_H_