mirror of https://github.com/trapexit/mergerfs.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							41 lines
						
					
					
						
							845 B
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							41 lines
						
					
					
						
							845 B
						
					
					
				| #include <cstddef> | |
| #include <memory> | |
| #include <type_traits> | |
| #include <utility> | |
|  | |
| namespace std | |
| { | |
|   template<class T> struct _Unique_if | |
|   { | |
|     typedef unique_ptr<T> _Single_object; | |
|   }; | |
| 
 | |
|   template<class T> struct _Unique_if<T[]> | |
|   { | |
|     typedef unique_ptr<T[]> _Unknown_bound; | |
|   }; | |
| 
 | |
|   template<class T, size_t N> struct _Unique_if<T[N]> | |
|   { | |
|     typedef void _Known_bound; | |
|   }; | |
| 
 | |
|   template<class T, class... Args> | |
|   typename _Unique_if<T>::_Single_object | |
|   make_unique(Args&&... args) | |
|   { | |
|     return unique_ptr<T>(new T(std::forward<Args>(args)...)); | |
|   } | |
| 
 | |
|   template<class T> | |
|   typename _Unique_if<T>::_Unknown_bound | |
|   make_unique(size_t n) | |
|   { | |
|     typedef typename remove_extent<T>::type U; | |
|     return unique_ptr<T>(new U[n]()); | |
|   } | |
| 
 | |
|   template<class T, class... Args> | |
|   typename _Unique_if<T>::_Known_bound | |
|   make_unique(Args&&...) = delete; | |
| }
 |