In-Person Training

Transitioning to Modern C++

Write more expressive, efficient, and concise C++ code with ease

O’Reilly’s Boston Training Center, Boston, MA

See ticket options

Course limited to 40 people. Sign up before it sells out!

Join C++ expert Leor Zolman for a survey of the most important additions to C++11/14/17 (aka Modern C++) introduced since C++11, including the most significant C++14 and C++17 features. If you’re looking for a quick introductory overview of Modern C++, this workshop is for you. It takes a relatively high-level approach rather than delving into implementation techniques and excessive details. You’ll explore Modern C++’s strengths, including:

  • Increased code clarity (lambdas, uniform initialization, auto, new OOD control)
  • Improved performance (rvalue references, move semantics and perfect forwarding)
  • Multithreading (concurrency and atomic types)

You’ll also cover the language’s miscellaneous new convenience features and take a look at some of the key new standard library components (smart pointers, tuples, new STL containers, std::function, and type traits).

This three-day workshop takes place at the O’Reilly Boston Training Center. You’ll have the personal attention of experienced instructor Leor Zolman as you explore the features and capabilities of Modern C++. The workshop consists of lecture, discussion, hands-on exercises, and Q&A (breaks and lunch are included, too). By the end of this course, you’ll be confident in your abilities with Modern C++.

What you’ll learn—and how you can apply it

By the end of this live, hands-on course, you’ll understand:

  • How to use the new language features and library components in Modern C++ in practice
  • How to refactor older C++ code to take advantage of the new features found in Modern C++

And you’ll be able to:

  • Write more powerful C++ code
  • Write C++ code that’s concise, expressive, and highly efficient
  • Advise your teammates on potently powerful Modern C++ tricks and crucial best practices

This course is for you because…

  • You’re an experienced C++ developer who needs to learn how to apply the new facilities of Modern C++ to write more expressive, efficient, and concise code

Prerequisites

You should have prior development experience with C++98/C++03.

About your instructor

Leor Zolman

Leor Zolman is a veteran C++ trainer, speaker, and consultant with deep roots in the C++ community. He’s the author of STLFilt, a free C++ error message “decryptor” available for many popular C++ compilers. He’s currently teaching Scott Meyers’ “Effective Modern C++” training course, as well as classes on the STL and other Modern C++ and Legacy C++ topics.

Course outline

  • Day One
  • C++ Timeline
  • Goals for C++11/14
  • Part I: The Simpler Core Language Features
    • auto, decltype, trailing return types
    • Non-member begin()/end()
    • nullptr
    • Generalized function return type deduction (C++14)
    • auto vs. decltype(auto) (C++14)
    • Range for
    • >> in template specializations
    • static_assert
    • extern template
    • noexcept
    • Variadic templates
    • constexpr functions and data
    • Template alias
    • Variable templates (C++14)
    • String-related functionality
    • inline namespaces
    • Attributes
    • Fixed-width integer types
    • Scoped enums
    • long long
    • alignas / alignof
    • Generalized unions and PODs
    • Binary literals (C++14)
    • Single quotes as digit separators (C++14)
  • Part II: Features Supporting Better Class Design
    • Generated functions: default / delete
    • Override control: override / final
    • Delegating constructors
    • Increased flexibility for in-class initializers
    • Inheriting constructors
    • Explicit conversion operators
    • Reference-qualified member functions
  • Day Two
  • Part III: Larger Language Features
    • Initialization
      • – Initializer lists
      • – Uniform initialization
      • – Prevention of narrowing
      • – Lab exercise: New initialization rules
    • Lambdas
      • – Lambda expressions and closures
      • – Capture modes
      • – Lambdas as “local functions”
      • – Generic lambdas (C++14)
      • – Generalized lambda capture (C++14)
      • – Lab exercise: Lambdas
    • Rvalue references and move semantics
      • – lvalues and rvalues (the modern view)
      • – “move” operations
      • – Reference collapsing and universal (“forwarding”) references
      • – Perfect forwarding
      • – When move-enable a type?
      • – The Rule of 5
      • – Lab exercise: Performance characteristics of moving vs. copying
  • Part IV: Concurrency
    • Threads
    • Passing arguments to threads
    • Data lifetime considerations
    • Synchronization with mutexes and locking
    • Avoiding deadlock
    • mutex and mutex-wrapper types
    • Returning values from threads
    • async()
    • futures
    • Querying future status
    • Condition variables
    • Thread-local storage
    • Atomics
  • Day Three
  • Part V: New Library Components
    • std::tuple
    • Lab exercise: Implementing a variadic function template
    • Type Traits
    • Traits classes and tag dispatch
    • Standard type traits
    • std::enable_if
    • Lab exercise: What’s the right way to design a class to be copyable but not movable?
    • New Function/Function Object Facilities
    • std::function
    • std::bind
    • Smart Pointers
    • std::unique_ptr
    • std::shared_ptr
    • std::weak_ptr
    • make_shared and make_unique
    • Fixed-length Array
    • std::array
    • Hash-based Containers
    • std::unordered_*
    • Performance enhancements
  • Epilogue: Is C++ Too Complicated?
  • References and Resources

Venue

The course will be held at the O’Reilly Boston Training Center: 2 Avenue de Lafayette, 6th floor, Boston, MA 02111

Lunch will be provided.

Travel discounts

Rental Car Discounts

Hertz

If you need a rental car while attending the conference, you may go to the Hertz Interactive Reservation System to receive the special O’Reilly discount on rental cars for the conference. Or call Hertz Reservations at (800) 654-3131 and mention code #01XY0041.

United Airline Discount

United

To receive your 3% - 10% Discount on United Airlines flights to our event, you can book online at united.com and provide discount Code ZVUR591372. Or, for a $25 service fee you can call United Meetings at (800) 426-1122 where a ticketing agent can help you by phone.

Group tickets

Working as a team? Learn as a team.

Taking this course as a team ensures that everyone is on the same page and understands both the immediate and long-term and immediate goals of your project. Exploring new ideas and collaborating on exercises together is a great team-building experience; everyone on your team will have the opportunity to ask questions, discuss use cases, and learn from other participants.

For group tickets and enterprise licensing, please contact training@oreilly.com

Code of Conduct

All participants must follow our Code of Conduct, the core of which is this: an O’Reilly events should be a safe and productive environment for everyone. Read more

O’Reilly Media, Inc. assumes no responsibility or liability for the facilities or services provided by the vendors and suppliers. Anyone attending this conference releases O’Reilly from any and all claims that may arise out of attending at this conference.

Thanks for signing up!
We protect your privacy.
Thanks for signing up!
We protect your privacy.