1 /* 2 * Copyright 2016 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkMakeUnique_DEFINED 9 #define SkMakeUnique_DEFINED 10 11 #include <memory> 12 13 namespace skstd { 14 15 // std::make_unique is in C++14 16 template<typename T, typename... Args> make_unique(Args &&...args)17std::unique_ptr<T> make_unique(Args&&... args) { 18 return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); 19 } 20 21 template<typename T> make_unique_default(size_t n)22std::unique_ptr<T> make_unique_default(size_t n) { 23 return std::unique_ptr<T>(new typename std::remove_extent<T>::type[n]); 24 } 25 26 } 27 28 #endif // SkMakeUnique_DEFINED 29