Advanced C++ FAQs: Volumes 1 & 2
This book is a combination of the following two books : <ol> <li>Advanced C++ FAQs: Volume 1 : Fundamentals</li> <li>Advanced C++ FAQs: Volume 2 : Generic Programming</li> <br><br> <b>Advanced C++ FAQs: Volume 1 : Fundamentals</b><br> This book is not an introduction to C++. It assumes that the reader is aware of the basics of C++98 and C++03 and is keen to expand her horizon to latest and greatest in the present and future of C++, including C++11 and C++1y(aka C++14). It contains selected fundamental problems with detailed solutions to all of these which will help the reader to hone her skills to solve a particular problem. <br><br> <b>Advanced C++ FAQs: Volume 2 : Generic Programming</b><br> This book is sequel to the first volume <b>Advanced C++ FAQs : Volume 1 : Fundamentals</b>. It contains selected generic programming problems with detailed solutions. <br><br> <ol> <li><b>Algorithms</b></li> 1.1 Efficient Insertion in Vector <br> 1.2 reverse algorithm for forward iterators <br> ... <br> 1.4 swapping unequal sections <br> 1.5 rotate algorithm <br> ... <br> 1.9 Avoid Raw Loops <br> ... <br> 1.13 better algorithm than std::rotate <br> ... <br> 1.16 reverse algorithm dispatch <br> 1.17 Efficient Algorithm for reverse <br> ... <br> 1.21 is partitioned algorithm <br> 1.22 Bisection Algorithm <br> ... <br> 1.25 advance and next <br> 1.26 custom iota<br> ... <br> <li><b>Utilities</b></li> 2.1 std::move is rvalue cast <br> 2.2 std::move if noexcept <br> 2.3 std::forward <br> ... <br> 2.6 is same <br><br> <li><b>Templates</b></li> 3.1 alias template <br> 3.2 template parameter pack <br> 3.3 override virtual and template <br> ... <br> <br> <br> <li><b>Classes</b></li> <li><b>Namespaces</b></li> <li><b>Type Specifiers</b></li> <li><b>Constant Expression</b></li> <li><b>C++14</b></li> ... <br> 8.4 auto return type in function declaration <br> ... <br> 8.6 return type deduction for lambdas <br> 8.7 decltype(auto) <br> ... <br> 8.9 explicit instantiation and auto <br> 8.10 return type deduction and virtual <br> ... <br> 8.12 generalized lambda capture <br> 8.13 generic lambda and product vector <br> ... <br> <li><b>Miscellaneous</b></li> <li><b>More C++14</b></li> 10.1 variable templates <br> ... <br> 10.5 static data member template <br> ... <br> 10.7 default argument and specialization of variable template 10.8 lambda and variable template <br> ... <br> 10.15 auto variable template and generic lambda <br> 10.16 constexpr member functions and implicit const <br> 10.17 constexpr constructor and initialization <br> ... <br> 10.23 deprecated attribute <br> 10.24 Member initializers and aggregate class <br> ... <br> 10.31 Type Transformation Aliases <br> ... <br> 10.33 make unique as perfect forwarding guy <br> ...<br> 10.37 make unique and default initialization <br> 10.38 make unique and array T[n] <br> ... <br> 10.43 Extend make unique : T[N] <br> 10.44 allocate unique <br> 10.45 Compile-time integer sequences <br> ... <br> 10.47 std::index sequence <br> 10.48 Custom Sequence : Addition <br> ... <br> 10.55 sfinae and represent type of function <br> 10.56 metafunction : check presence of type member <br> 10.57 std::common type and sfinae <br> <br> <br> <li><b>Foundation</b></li> 11.1 private cast <br> 11.2 Value Type Deduction Framework <br> ...<br> 11.5 Template Alias and Rebind Template <br> 11.6 Template Alias and Non Deducible Context <br> ... <br> 11.8 Template Alias and Specialization <br> ... <br> 11.13 std::copy backward <br> ... <br> 11.18 iota n : iota for writing n items <br> 11.19 Reverse iota <br> ... <br> 11.24 Preventing Name Hijacking <br> ... <br> 11.29 Move Constructor and unique pointer <br> 11.30 Find First Null Pointer in a Container <br> 11.31 Average of variable number of arguments <br> ....<br> 11.33 Exchange Utility <br> 11.34 Addressing Tuple By Type <br> 11.35 Quoted manipulators <br> 11.36 Null Iterator <br> </ol>