diff options
author | Fernando S <fsahmkow27@gmail.com> | 2022-12-25 02:26:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-25 02:26:06 +0100 |
commit | 3e6850f00bdd541202a8369438bda7988c8001f5 (patch) | |
tree | 34691ecb826bc402f68a075de07f4f6aaebf8c44 /src/common/make_unique_for_overwrite.h | |
parent | qt: fix 'Pause' menu item (#9497) (diff) | |
parent | scratch_buffer: Explicitly defing resize and resize_destructive functions (diff) | |
download | yuzu-3e6850f00bdd541202a8369438bda7988c8001f5.tar yuzu-3e6850f00bdd541202a8369438bda7988c8001f5.tar.gz yuzu-3e6850f00bdd541202a8369438bda7988c8001f5.tar.bz2 yuzu-3e6850f00bdd541202a8369438bda7988c8001f5.tar.lz yuzu-3e6850f00bdd541202a8369438bda7988c8001f5.tar.xz yuzu-3e6850f00bdd541202a8369438bda7988c8001f5.tar.zst yuzu-3e6850f00bdd541202a8369438bda7988c8001f5.zip |
Diffstat (limited to '')
-rw-r--r-- | src/common/make_unique_for_overwrite.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/common/make_unique_for_overwrite.h b/src/common/make_unique_for_overwrite.h new file mode 100644 index 000000000..c7413cf51 --- /dev/null +++ b/src/common/make_unique_for_overwrite.h @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include <memory> +#include <type_traits> + +namespace Common { + +template <class T> +requires(!std::is_array_v<T>) std::unique_ptr<T> make_unique_for_overwrite() { + return std::unique_ptr<T>(new T); +} + +template <class T> +requires std::is_unbounded_array_v<T> std::unique_ptr<T> make_unique_for_overwrite(std::size_t n) { + return std::unique_ptr<T>(new std::remove_extent_t<T>[n]); +} + +template <class T, class... Args> +requires std::is_bounded_array_v<T> +void make_unique_for_overwrite(Args&&...) = delete; + +} // namespace Common |