C++ memory http://www.cplusplus.com/reference/memory/ C++ smart pointers -- p.392 https://en.cppreference.com/w/cpp/memory/unique_ptr one reference https://en.cppreference.com/w/cpp/memory/shared_ptr reference counts -- decrement in destructors, adjust with assignment http://www.cplusplus.com/reference/memory/weak_ptr/ require a bit of help first mention of "move semantics" References in C -- p. 428 p. 430 second mention of "move semantics" R-value reference Example! move semantics https://en.wikipedia.org/wiki/Reference_(C%2B%2B) https://isocpp.org/wiki/faq/references C++ smart pointers -- p. 392 References in C++ -- p. 427 R-value references -- p. 430 C++ initiation lists Whew https://en.cppreference.com/w/cpp/language/value_category glvalue, prvalue, xvalue, lvalue, rvalue glvalue -- generalized value prvalue -- pure value xvalue -- expiring valued lvalue -- glvalue but not xvalue rvalue -- prvalue or xvalue https://isocpp.org/blog/2016/04/quick-q-what-are-rvalues-lvalues-xvalues-glvalues-and-prvalues double colon vector ::iterator v1Iter; :: member function, top-level function, variable with global scope C++ has "member functions" not "methods" http://www.cplusplus.com/reference/vector/vector/ Chapter 8--- smart pointers p. 392 https://en.wikipedia.org/wiki/Reference_(C%2B%2B) https://docs.microsoft.com/en-us/cpp/cpp/smart-pointers-modern-cpp?view=vs-2017 https://en.cppreference.com/w/cpp/language/value_category expression glvalue rvalue lvalue xvalue prvalue Set theory Expression == glvalue + rvalue Expression == lvalue + xvalue + prvalue glvalue contains lvalue rvalue contains prvalue glvalue and rvalue do not intersect no two of lvalue, xvalue, prvalue intersect move semantics vector C++ references alias https://en.wikipedia.org/wiki/Reference_(C%2B%2B) C++ 1998 C++98 (-ansi in gcc) c++03 (corrigendem -- correction) C++11 C++14 C++17 C++20 https://en.cppreference.com/w/cpp/language/value_initialization ( -- C++11 values Rvalue references T&& non-const rvalues Can be modified after initialized -- move semantics smart pointers in C++ std::unique_ptr F() -- container for raw pointer https://en.wikipedia.org/wiki/Smart_pointer#unique_ptr guarentees this is the only ptr https://en.wikipedia.org/wiki/Smart_pointer#shared_ptr_and_weak_ptr reference counting std::move variadic functions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2027.html ISO C90, ISO C99, ISO C11 Example 9.19 Initialization list... https://isocpp.org/ https://isocpp.org/wiki/faq https://isocpp.org/wiki/faq/references https://isocpp.org/wiki/faq/cpp11-language https://github.com/AnthonyCalandra/modern-cpp-features https://isocpp.org/wiki/faq/cpp11 https://isocpp.org/wiki/faq/cpp14 Effective Modern C++: std::move doesn't move std::forward doesn't forward