| 
					
				 | 
			
			
				@@ -12,18 +12,19 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace cm { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-template <typename T, typename O, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          cm::enable_if_t< 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            std::is_pointer<cm::invoke_result_t<decltype(&O::get), O>>::value, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            int> = 0> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+template < 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  typename T, typename O, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cm::enable_if_t<std::is_pointer<decltype(std::declval<O>().get())>::value, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  int> = 0> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 T& static_reference_cast(O& item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return *(static_cast<T*>(item.get())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-template <typename T, typename O, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          cm::enable_if_t< 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            std::is_pointer<cm::invoke_result_t<decltype(&O::get), O>>::value, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            int> = 0> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+template < 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  typename T, typename O, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cm::enable_if_t<std::is_pointer<decltype(std::declval<O>().get())>::value, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  int> = 0> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 T& dynamic_reference_cast(O& item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   auto p = dynamic_cast<T*>(item.get()); 
			 |