File indexing completed on 2025-01-30 10:10:12
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include <memory>
0012
0013 namespace gloo {
0014
0015
0016
0017 #if __cplusplus >= 201402L || \
0018 (defined __cpp_lib_make_unique && __cpp_lib_make_unique >= 201304L) || \
0019 (defined(_MSC_VER) && _MSC_VER >= 1900)
0020 using std::make_unique;
0021 #else
0022
0023 template<typename T, typename... Args>
0024 typename std::enable_if<!std::is_array<T>::value, std::unique_ptr<T>>::type
0025 make_unique(Args&&... args) {
0026 return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
0027 }
0028
0029
0030 template<typename T>
0031 typename std::enable_if<std::is_array<T>::value, std::unique_ptr<T>>::type
0032 make_unique(const size_t n) {
0033 return std::unique_ptr<T>(new typename std::remove_extent<T>::type[n]());
0034 }
0035
0036
0037 template<typename T, typename... Args>
0038 typename std::enable_if<
0039 std::extent<T>::value != 0, std::unique_ptr<T>>::type
0040 make_unique(Args&&...) = delete;
0041
0042 #endif
0043
0044 }