21#ifndef GNSS_SDR_GNSS_SDR_MAKE_UNIQUE_H
22#define GNSS_SDR_GNSS_SDR_MAKE_UNIQUE_H
24#if __cplusplus == 201103L
42 typedef unique_ptr<T> _Single_object;
48 typedef unique_ptr<T[]> _Unknown_bound;
51template <
class T,
size_t N>
52struct _Unique_if<T[N]>
54 typedef void _Known_bound;
57template <
class T,
class... Args>
58typename _Unique_if<T>::_Single_object
59make_unique(Args&&... args)
61 return unique_ptr<T>(
new T(std::forward<Args>(args)...));
65typename _Unique_if<T>::_Unknown_bound
68 typedef typename remove_extent<T>::type U;
69 return unique_ptr<T>(
new U[n]());
72template <
class T,
class... Args>
73typename _Unique_if<T>::_Known_bound
74make_unique(Args&&...) =
delete;