| /* |
| * Copyright 2016 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkMakeUnique_DEFINED |
| #define SkMakeUnique_DEFINED |
| |
| #include <memory> |
| |
| namespace skstd { |
| |
| // std::make_unique is in C++14 |
| template<typename T, typename... Args> |
| std::unique_ptr<T> make_unique(Args&&... args) { |
| return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); |
| } |
| |
| template<typename T> |
| std::unique_ptr<T> make_unique_default(size_t n) { |
| return std::unique_ptr<T>(new typename std::remove_extent<T>::type[n]); |
| } |
| |
| } |
| |
| #endif // SkMakeUnique_DEFINED |