As promised, the great Stephan T. Lavavej is back! Tens of thousands of you have watched STL's (those are his initials, so that's what we call him) introductory series on the STL, or Standard Template Library. If you haven't, you should. This series, Advanced STL, covers the gory details of the STL's implementation -> you will therefore need to be versed in the basics of STL, competent in C++ (of course), and be able to pay attention! Stephan is a great teacher and we are so happy to have him on Channel 9—the only place you'll find this level of technical detail regarding the internals of the STL. There are no books. There are no websites. This is Stephan taking us into what is uncharted territory for most, even those with a more advanced STL skill set.



In the second part of this n-part series, Stephan digs into implementation strategies for various STL algorithms and opens the hood to look at some of the machinery inside the STL employing the goodness of template meta-programming and type traits. You'll also learn about some C++0x features that are used inside STL.



As you continue to learn about the beauty and the weirdness inside the STL, you should take Stephan's wisdom to heart and see if you can implement some of the patterns he shares with you in your own code. And you should, of course, take his advice about what NOT to do in your native compositions.



Tune in. Enjoy. Learn.

[Advanced STL]

Part 1 (shared_ptr - type erasure)

Part 2 (equal()/copy() - algorithm optimizations)

Part 3 (_ITERATOR_DEBUG_LEVEL, #pragma detect_mismatch, and /d1reportSingleClassLayout)

Part 4 (rvalue references v2.1 and associative container mischief)

Part 5 (deduplicator, using Boost.Bimap/Filesystem/ScopeExit) - see Stephan's deduplicate.cpp

Part 6 (container pretty printer) - see Stephan's pretty_printer.cpp