mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 11:42:28 +00:00 
			
		
		
		
	remove a bunch of constructors to avoid copies
still not enough to guarantee that vector::expand doesnt copy (WIP)
This commit is contained in:
		
							parent
							
								
									98b5abb1d4
								
							
						
					
					
						commit
						7ac2791482
					
				
					 16 changed files with 66 additions and 83 deletions
				
			
		|  | @ -18,8 +18,7 @@ Revision History: | |||
| 
 | ||||
| --*/ | ||||
| 
 | ||||
| #ifndef OPTIONAL_H_ | ||||
| #define OPTIONAL_H_ | ||||
| #pragma once | ||||
| 
 | ||||
| template<class T> | ||||
| class optional { | ||||
|  | @ -47,6 +46,11 @@ public: | |||
|         construct(val); | ||||
|     } | ||||
| 
 | ||||
|     optional(T && val) noexcept : m_obj(nullptr), m_initialized(0) { | ||||
|         std::swap(m_obj, val.m_obj); | ||||
|         std::swap(m_initialized, val.m_initialized); | ||||
|     } | ||||
| 
 | ||||
|     optional(const optional<T> & val): | ||||
|         m_initialized(0) { | ||||
|         if (val.m_initialized == 1) { | ||||
|  | @ -160,7 +164,3 @@ public: | |||
|      | ||||
|     T * & operator*() { return m_ptr; } | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| #endif /* OPTIONAL_H_ */ | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue