Ciere Consulting Logo Ciere Consulting
Latin : /ki-ɛɹ-ə/ to conjure, to summon, to put in motion
Software Consulting, C++ Training, Mentoring, and Project Recovery

Modern C++ for Polyglots

Modern C++ for Polyglots is a two-day training course taught by Michael Caisse. It is offered at your site or the Ciere El Dorado Hills office.

Here is the upcoming public course schedule. Click on the course title for more information and to purchase tickets.

January 31 - February 1, 2019Ciere Office$1200.00
March 28 - 29, 2019Ciere Office$1200.00
June 20 - 21, 2019Ciere Office$1200.00
August 12 - 13, 2019Ciere Office$1200.00

Course Description

"Thanks Michael for offering one of most impressive, conceptually clear, immersive and enjoyable courses I have ever taken!"

Fluent with another modern programming language and need a kick-start with C++? This two-day course has been designed to provide other-language-programmers an introduction to the Modern C++ language. We will dive into portions of the core language and standard library that enable modern idioms and best practices. We wont spend time on old-school techniques. Concepts and techniques are solidified through examples and exercises.

Join us and start using the power of Modern C++ in your own projects!


Participants should be proficient in a contemporary langauge such as Java, Javascript, C#, or Python.

This course includes exercises, so bring your laptop and your favorite C++11/14/17 development environment.

Course Topics

Some of the topics covered:

  1. C++ and the Machine Model

  2. Fundamental Types

  3. Values, References, Pointers
    • Value Semantics
    • References are Aliases
    • Pointers
  4. Free functions
    • Declaration/Definition
    • Overloads
    • Scoping
  5. Namespaces, annonymous namespaces

  6. Objects
    • scope / visibility
    • RAII
    • member initialization
    • special member functions (move semantics and RVO)
    • defaulted and deleted members
    • delegating constructors
    • inheritance
    • virtual
    • Inheriting constructors
    • override and final
    • namespaces
  7. ADL

  8. Initialization
    • Uniform initialization
    • Initializer lists
    • auto
  9. Range based for loops

  10. Generic Programming
    • Template functions
    • Template classes
    • template alias
  11. Lambda Expressions

  12. Standard Containers and Algorithms
    • Also tuple here
  13. Smart pointers
    • Usage of unique, shared, and weak pointers
    • Ownership and raw pointers
  14. Polymorphic function wrapper std::function

  15. Compile Time / Run Time
    • constexpr

Contact us for more information: