aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2018-04-24 14:57:09 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-04-24 19:29:16 +0000
commit47728258b05a1ae040ed03aee53eabbaa0acbc5a (patch)
tree71a3dd20eb86333340e0ab2b676c29787f7af1bc
parent6cdb7d3a4ca932d1564ffea1602d5c39c5e046a2 (diff)
include/private/SkTemplates: SkInPlaceNewCheck uses ...
Change-Id: Ia9af6daec20bdd4bfa7f34c8bff7b400f5775dd9 Reviewed-on: https://skia-review.googlesource.com/123503 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
-rw-r--r--include/private/SkTemplates.h18
1 files changed, 4 insertions, 14 deletions
diff --git a/include/private/SkTemplates.h b/include/private/SkTemplates.h
index 79a13886f1..4a9a2f223b 100644
--- a/include/private/SkTemplates.h
+++ b/include/private/SkTemplates.h
@@ -386,21 +386,11 @@ template <typename T> void SkInPlaceDeleteCheck(T* obj, void* storage) {
* ...
* SkInPlaceDeleteCheck(obj, storage);
*/
-template <typename T> T* SkInPlaceNewCheck(void* storage, size_t size) {
- return (sizeof(T) <= size) ? new (storage) T : new T;
+template<typename T, typename... Args>
+T* SkInPlaceNewCheck(void* storage, size_t size, Args&&... args) {
+ return (sizeof(T) <= size) ? new (storage) T(std::forward<Args>(args)...)
+ : new T(std::forward<Args>(args)...);
}
-
-template <typename T, typename A1, typename A2, typename A3>
-T* SkInPlaceNewCheck(void* storage, size_t size, const A1& a1, const A2& a2, const A3& a3) {
- return (sizeof(T) <= size) ? new (storage) T(a1, a2, a3) : new T(a1, a2, a3);
-}
-
-template <typename T, typename A1, typename A2, typename A3, typename A4>
-T* SkInPlaceNewCheck(void* storage, size_t size,
- const A1& a1, const A2& a2, const A3& a3, const A4& a4) {
- return (sizeof(T) <= size) ? new (storage) T(a1, a2, a3, a4) : new T(a1, a2, a3, a4);
-}
-
/**
* Reserves memory that is aligned on double and pointer boundaries.
* Hopefully this is sufficient for all practical purposes.