зеркало из
				https://github.com/iharh/notes.git
				synced 2025-10-31 05:36:08 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			74 строки
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			74 строки
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Seems to be obsolete:
 | |
| 
 | |
| Abrahams - Want Speed - Pass by Value:
 | |
|   http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/
 | |
|   http://cpp-next.com/archive/2009/09/making-your-next-move/
 | |
|   http://cpp-next.com/archive/2009/09/your-next-assignment/
 | |
|   http://cpp-next.com/archive/2009/10/exceptionally-moving/
 | |
|   http://cpp-next.com/archive/2009/12/onward-forward/
 | |
| 
 | |
| ***********
 | |
| * Threads *
 | |
| ***********
 | |
| 
 | |
| RAAI class for std::thread
 | |
| 
 | |
| class ThreadRAAI
 | |
| {
 | |
| public:
 | |
|   typedef void (std::thread::*RAAIAction)(); // d-tor action
 | |
| 
 | |
|   ThreadRAAI(std::thread &&thread, RAAIAction a)
 | |
|   : t(std::move(thread)), action(a) {}
 | |
| 
 | |
|   ~ThreadRAAI()
 | |
|   { if (t.joinable()) (t.*action)(); } // need to do more protection for race cond
 | |
| 
 | |
| private:
 | |
|   RAAIAction action;
 | |
|   std::thread t;
 | |
| };
 | |
| 
 | |
| ThreadRAAI t1(std::thread(doThisWork), &std::thread::join); // join on destruction
 | |
| 
 | |
| Note: Boost has an RAAI answer !!!
 | |
| 
 | |
| *************
 | |
| * decltypes *
 | |
| *************
 | |
| 
 | |
| https://www.ibm.com/developerworks/community/blogs/5894415f-be62-4bc0-81c5-3956e82276f3/entry/introduction_to_the_c_11_feature_trailing_return_types
 | |
| https://www.ibm.com/developerworks/community/blogs/5894415f-be62-4bc0-81c5-3956e82276f3/entry/c_11_the_decltype_specifier_part_i
 | |
| https://www.ibm.com/developerworks/community/blogs/5894415f-be62-4bc0-81c5-3956e82276f3/entry/c_11_the_decltype_specifier_part_ii
 | |
| 
 | |
| http://thbecker.net/articles/auto_and_decltype/section_01.html
 | |
| 
 | |
| *************
 | |
| * static if *
 | |
| *************
 | |
| 
 | |
| ???
 | |
| 
 | |
| ********************************
 | |
| * explicit operator conversion *
 | |
| ********************************
 | |
| 
 | |
| explicit operator bool() { ... }
 | |
| 
 | |
| - Function-template default arguments
 | |
| - Delegation constructors
 | |
| - Uniform initialization
 | |
| - Non-static data member initializers (instead of c-tors)
 | |
| - some_fun() = default;
 | |
|   ... = delete; // restore suppressed default c-tor
 | |
| - template "using" operators
 | |
| 
 | |
|   template <class T> using Vec = vector<T, MyAlloc<T>>;
 | |
| 
 | |
|   Vec<int> v;
 | |
|   template <class T> void f(Vec<T> &);
 | |
|   f(v);
 | |
| 
 | |
| - Variadic templates
 | |
| 
 | 
