1 /* Copyright 2016-present Facebook, Inc. 2 * Licensed under the Apache License, Version 2.0 */ 3 #pragma once 4 #include <memory> 5 6 namespace watchman { 7 8 // Roughly equivalent to the C++14 std::make_unique 9 template <typename T, typename... Args> make_unique(Args &&...args)10std::unique_ptr<T> make_unique(Args&&... args) { 11 return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); 12 } 13 14 template <typename T, typename Deleter, typename... Args> make_unique(Args &&...args)15std::unique_ptr<T, Deleter> make_unique(Args&&... args) { 16 return std::unique_ptr<T, Deleter>(new T(std::forward<Args>(args)...)); 17 } 18 } 19