C++ is the standard language for implementing object-oriented designs where performance is a priority. Although long-term language stability is an important feature of C++ , it has nevertheless continued to be developed. C++ 11 introduced a number of significant language and library features to improve safety and performance which have in turn been further developed within C++ 14 and 17. These features allow us to more precisely express concepts from a design directly in code. Although these changes could be considered incremental, in fact they allow and encourage a whole new approach to programming. This course sets out from the beginning to embrace this new approach making full use of the facilities for writing well encapsulated robust code which is at the same time supremely efficient. The course is written from a developers rather than an academics perspective, following the design of a simple library and introducing language and library features as they are encountered. In the process virtually all language features are explored and most of the standard library. In addition a variety of design patterns are examined and good practices are emphasised. Although the course makes use of C++ 11/14/17 features throughout, most of the material is useful and relevant to pre C++ 11 users. Delegates will gain a greater understanding of the capabilities and potential pitfalls of the C++ language and will be more able to use C++ language features to write robust, quality software. This a comprehensive five-day course with a combination of lectures and practical sessions for each chapter to reinforce the topics covered throughout the course. The practicals avoid algorithmic difficulties so that delegates can concentrate on specific C++ features.