Do you know why `const T&` can bind to lvalue and rvalue? Do you know `T &&`? Do you know how to preserve the original type as input value? Do you know `perfect forwarding`? If any of these questions is unclear, don't hesitate to read this blog.
RAII --- Resource Acquisition Is Initialization. This is a C++ programming technique which binds the life cycle of a resource that must be acquired before use to the lifetime of an object.
You have already known about list initialization introduced in C++11. But if a class inherit from another aggregate class, how do you initialize the variables in base class using list initialization? If you don't know, please click this article, and know how to do this.