2016-11-20 22:04:31 +00:00
|
|
|
#pragma once
|
|
|
|
|
2016-12-03 15:44:08 +00:00
|
|
|
#include <unistd.h>
|
|
|
|
|
2016-11-20 22:04:31 +00:00
|
|
|
#include "common.hpp"
|
|
|
|
|
|
|
|
POLYBAR_NS
|
|
|
|
|
|
|
|
namespace factory_util {
|
2016-12-20 04:05:43 +00:00
|
|
|
namespace detail {
|
|
|
|
struct null_deleter {
|
|
|
|
template <typename T>
|
|
|
|
void operator()(T*) const {}
|
|
|
|
};
|
2021-09-21 19:15:49 +00:00
|
|
|
} // namespace detail
|
2016-12-20 04:05:43 +00:00
|
|
|
|
|
|
|
extern detail::null_deleter null_deleter;
|
2016-12-05 19:41:00 +00:00
|
|
|
|
|
|
|
template <class T, class... Deps>
|
|
|
|
shared_ptr<T> singleton(Deps&&... deps) {
|
2016-12-13 13:26:09 +00:00
|
|
|
static shared_ptr<T> instance{make_shared<T>(forward<Deps>(deps)...)};
|
2016-11-20 22:04:31 +00:00
|
|
|
return instance;
|
|
|
|
}
|
2021-09-21 19:15:49 +00:00
|
|
|
} // namespace factory_util
|
2016-11-20 22:04:31 +00:00
|
|
|
|
|
|
|
POLYBAR_NS_END
|