00001
00002
00018 #ifndef CXXUTILS_MAKE_UNIQUE_H
00019 #define CXXUTILS_MAKE_UNIQUE_H
00020
00021
00022 #if __cplusplus > 201100
00023
00024
00025 #include <memory>
00026
00027
00028 namespace CxxUtils {
00029
00030
00031 #if __cplusplus > 201103L
00032
00033 using std::make_unique;
00034 #else
00036 // Copied from libstdc++
00037 template<typename Tp, typename... Args>
00038
00039 inline
00040 std::unique_ptr<Tp>
00041 make_unique(Args&&... args)
00042 { return std::unique_ptr<Tp>(new Tp(std::forward<Args>(args)...)); }
00043 #endif
00044
00045
00046
00047 }
00048
00049
00050 #endif // __cplusplus > 201100
00051
00052 #endif // not CXXUTILS_MAKE_UNIQUE_H