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)10 std::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)15 std::unique_ptr<T, Deleter> make_unique(Args&&... args) {
16   return std::unique_ptr<T, Deleter>(new T(std::forward<Args>(args)...));
17 }
18 }
19