Here is the list of items that have been introduced since C++11 and are frequently asked in Interviews of many Investment Banks, big software companies and start ups.
First follow this link to see some of the most important features that have been introduced as a part of C++11 and are frequently being used and being more precise must be used in all modern C++ applications.
Now following are the topics that you should prepare without fail.
- Move Semantics - This is an important feature and you must understand how it works and why it is useful. Refer the links below.
- http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html
- http://stackoverflow.com/questions/3106110/what-are-move-semantics
- http://www.codeproject.com/Articles/397492/Move-Semantics-and-Perfect-Forwarding-in-Cplusplus
- https://en.cppreference.com/w/cpp/utility/move
- http://www.cplusplus.com/reference/utility/move/?kw=move
- New Containers
- Forward List
- Unordered Map
(Extremly Important)
- https://en.cppreference.com/w/cpp/container/unordered_map
- http://www.cplusplus.com/reference/unordered_map/unordered_map/
- http://stackoverflow.com/questions/21518704/how-does-c-stl-unordered-map-resolve-collisions
- http://stackoverflow.com/questions/11337494/c-stl-unordered-map-implementation-reference-validity
- Unordered Multimap
- Unordered Set
- Unordered Multiset
- Array
- Container Details - Following page gives complete details of each container in a tabular format. Along with when the iterator is invalidated, which API each container supports, etc.
- Multi Threading
(Very Important)
- Always remember the C++11 Multi threading is just a OOPs based wrapper on pthread and is totally dependent on pthread library and hence you must have to link the pthread library with the code by adding "-lpthread" to your makefile for compilation. Please google to see how to use them as there are plenty of examples available. I will link my implementation of Ring Buffer code later which uses a lot of the C++11 features.- Atomic
(Extremely Important)
- Thread
- Mutex
- Conditional Variable
- Thread Local Storage
(Very Important)
- Atomic
- Smart Pointers
(Extremely Important)
- You must understand clearly how these Smart Pointers are implemented internally. Refer this link. This implementation has few bugs but you will be able to understand the basic idea of how are they implemented and how they work.- Auto Pointer
(Deprecated)
- Remember this is deprecated since C++11 and has been replaced with Unique Pointer. So never say by mistake that you are using auto pointers in your code. - Unique Pointer
(Extremely Important)
- Shared Pointer
(Extremely Important)
- Weak Pointer
- Auto Pointer
- Chrono - For performance analysis and tuning. Again this depends on the rt library and hence if you are using any feature of chrono then you will have to link the rt library with the code by adding "-lrt" to your makefile for compilation.
- Lambda Expressions
- Miscellaneous -
- Until C++11 by default the C++ compiler provides 4 default functions to a class by default.
- Default Constructor.
- Destructor.
- Copy Constructor.
- Assignment Operator.
- Since C++11 the compiler provides 2 more default functions along with the existing 4 default functions to any class by default.
- Default Constructor.
- Destructor.
- Copy Constructor.
- Assignment Operator. (Now called Copy Assignment Operator)
- Move Constructor. (Since C++11)
- Move Assignment Operator. (Since C++11)
- Until C++11 by default the C++ compiler provides 4 default functions to a class by default.
I hope I have covered every important topic w.r.t. C++11 in this document. Let me know if this helps.