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