We may earn an affiliate commission when you visit our partners.
Course image
Packt - Course Instructors

A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course.

Read more

A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course.

In this comprehensive course, you will dive deep into the world of C++ templates, gaining both theoretical knowledge and practical experience. You’ll start with foundational concepts like template syntax and basic function templates, before advancing to more complex topics like class templates, specialization, and template instantiation. By understanding how templates enhance code reusability and flexibility, you’ll unlock powerful programming techniques to elevate your C++ skills.

The course is structured into distinct modules focusing on key areas such as function templates, class templates, and template changes across C++ standards. You'll explore critical topics like non-type template parameters, template argument deduction, and the practical uses of variadic templates. In addition, we'll cover template optimizations introduced in C++11, C++14, C++17, and C++20, ensuring you’re equipped with the most up-to-date tools for real-world applications.

Whether you're a seasoned C++ developer or someone eager to master template programming, this course will provide you with the depth of knowledge required to use templates effectively in modern C++ programming. By tackling hands-on examples and a final project, you'll sharpen your problem-solving skills and get exposure to best practices in template-based design.

This course is perfect for intermediate to advanced programmers who already have a basic understanding of C++ syntax and object-oriented programming principles. It’s ideal for developers aiming to specialize in template programming and those who want to improve their skills in managing complex codebases.

By the end of the course, you will be able to create and optimize function and class templates, apply advanced template features introduced in modern C++ standards, use explicit and partial specialization, and confidently implement templates in real-world projects.

Enroll now

What's inside

Syllabus

Introduction
In this module, we will introduce you to the course's structure, its primary goals, and why templates are a vital part of modern C++ programming. You'll gain a solid understanding of template syntax and learn the core concepts that will form the foundation for the rest of the course.
Read more

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Career center

Learners who complete Modern C++ Templates In Depth will develop knowledge and skills that may be useful to these careers:

Reading list

We've selected 44 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Modern C++ Templates In Depth.
Focused on writing clean, readable, and maintainable code, this book provides principles and practices essential for any software developer. It is particularly useful for solidifying understanding of good coding standards and is widely recommended across the industry. It serves as an excellent reference for improving code quality.
Offers practical advice on a wide range of software development topics, emphasizing pragmatic approaches to coding, debugging, and problem-solving. It's considered a must-read for developers seeking to improve their craft and is highly relevant for both broadening and deepening understanding. The 20th-anniversary edition keeps its timeless principles relevant for contemporary developers.
Foundational text on software design patterns, which are proven solutions to recurring design problems. Understanding these patterns is crucial for writing reusable and maintainable code. It's highly relevant for gaining a broad understanding and is considered a classic and must-read for anyone serious about software design.
Provides a catalog of refactoring techniques to improve the design of existing code without changing its external behavior. It's a practical guide essential for maintaining and evolving software systems, highly relevant for solidifying good coding practices and deepening understanding of code improvement.
Seminal work on the principles and practices of continuous integration, continuous delivery, and deployment automation. It is highly relevant for understanding contemporary software development methodologies focused on frequent and reliable releases. It's valuable for deepening understanding and key reference in the field.
Delves into the fundamental principles and challenges of designing data systems that are reliable, scalable, and maintainable. It is highly relevant for contemporary software development, particularly for engineers working with large-scale data, and provides deep technical understanding.
A follow-up to 'Effective C++', this book focuses on the features and best practices introduced in C++11 and C++14. It's essential for developers transitioning to or working with these modern C++ standards. The item-based format provides concrete advice and explanations for writing clean and effective modern C++ code. is geared towards experienced C++ programmers.
Written by members of Google's SRE team, this book details the practices and principles of Site Reliability Engineering, focusing on building and operating scalable and reliable systems. It's highly relevant for contemporary software development, particularly for those interested in operations, reliability, and large-scale systems. It provides deep insights into industry practices.
Explores the concepts and practices of designing and building microservices architectures. Given the prevalence of microservices in modern software development, this book is highly relevant for understanding contemporary approaches to system design. It's valuable for deepening understanding and serves as a practical guide.
A thorough and detailed introduction to C++ programming, this book is well-regarded for its clear explanations and comprehensive coverage of the language and standard library. It's suitable for beginners with some programming background or those looking for a deep dive into the fundamentals. is often used as a textbook in undergraduate programs.
Based on rigorous research, this book provides insights into the practices that drive high performance in technology organizations, focusing on Lean, DevOps, and continuous delivery. It's highly relevant for understanding contemporary trends and deepening knowledge in these areas, particularly for professionals and graduate students.
This classic book offers invaluable guidelines and advice for writing better C++ code. While not covering the very latest standards, the principles and practices discussed are fundamental for any serious C++ programmer. It's highly recommended for those who have a basic understanding of C++ and want to write more efficient, robust, and maintainable code. must-read for intermediate to advanced developers.
Introduces Domain-Driven Design (DDD), an approach to software development that emphasizes aligning software design with the business domain. It is highly relevant for designing complex systems and provides a framework for deepening understanding of how to model software effectively based on business requirements.
Provides a practical introduction to Test-Driven Development (TDD) through a series of examples. It's a foundational text for understanding this important agile practice and is highly relevant for improving code quality and developer confidence. It's particularly useful for those looking to adopt TDD in their workflow.
As concurrent programming is increasingly important, this book provides a comprehensive guide to the C++ concurrent programming facilities introduced in C++11 and updated in later standards. It's essential for developers writing multi-threaded applications in C++. is suitable for intermediate to advanced C++ programmers.
This comprehensive textbook covers a wide range of algorithms and data structures, providing a theoretical foundation essential for understanding efficient code development. It core resource for deepening understanding, particularly for students and professionals focusing on the computational aspects of software development. It is often used as a textbook in university programs.
A collection of essays on the challenges of software project management, this book offers timeless insights into the complexities of developing software systems. It's considered a classic and provides a broad understanding of the non-technical aspects of software development, particularly relevant for those interested in project management and the history of the field.
Focuses on writing high-performance C++ code, covering topics like optimization techniques, memory management, and parallel programming. It's aimed at experienced C++ developers who need to build applications with demanding performance requirements. This book is valuable for those working in performance-critical domains.
Offers a fast-paced introduction to C++ for programmers who already know another language. It focuses on teaching practical C++ programming techniques from the outset, emphasizing the use of the standard library. It's a good choice for experienced developers who want to become proficient in C++ quickly. It covers similar ground to 'C++ Primer' but at a faster pace.
Explores the Staff Engineer role and technical leadership paths for individual contributors in software engineering. It addresses a contemporary career topic and provides guidance for experienced professionals looking to grow their impact without moving into management.
Comprehensive guide to using templates in C++. It covers everything from the basics of templates to advanced techniques such as template metaprogramming. While it is not specific to C++20, it is still an essential resource for anyone who wants to learn about templates.
Comprehensive guide to using templates in C++. It covers everything from the basics of templates to advanced techniques such as template metaprogramming. While it is not specific to C++20, it is still an essential resource for anyone who wants to learn about templates.
Covers fundamental software design principles like DRY, YAGNI, and SOLID, which are directly applicable to writing reusable code. It uses real-world examples to illustrate how these principles translate into tangible benefits for code quality and reusability. It's a practical guide for both broad understanding and solidifying concepts.
Focusing on software design principles and patterns specifically for C++, this book helps developers write well-structured, maintainable, and robust applications. It bridges the gap between fundamental C++ knowledge and effective software architecture. is beneficial for intermediate to advanced programmers interested in improving their design skills.
Presents design patterns specifically for enterprise-level applications. Understanding these patterns is crucial for building large, complex systems where reusability and maintainability are paramount. It's a valuable resource for deepening understanding for those working on or interested in enterprise software development.
This widely used textbook provides a solid theoretical foundation for understanding operating systems, which are a fundamental component of software development environments. It is essential for deepening understanding of how software interacts with hardware and is commonly used in undergraduate and graduate programs.
Offers a comprehensive introduction to database systems, covering fundamental concepts, principles, and practices. Given the ubiquitous nature of databases in software applications, this book is highly relevant for gaining a broad understanding and deepening knowledge in this critical area. It is often used as a textbook.
Advocates for simplicity and complexity management in software design. It argues that good software design is about minimizing complexity, which in turn enhances maintainability and reusability. It offers a different perspective on design principles that complements books focused solely on patterns or clean code.
Provides a comprehensive overview of modern C++, covering a wide range of topics relevant to professional developers. It's a good resource for gaining a broad understanding of the language and its practical applications. It is suitable for intermediate to advanced programmers and can serve as a valuable reference.
Helps developers think in an object-oriented manner, which is fundamental to creating reusable code through concepts like encapsulation, inheritance, and polymorphism. It's a good resource for those new to OOP or looking to strengthen their foundational understanding.
Provides a deep dive into the underlying object model of C++, explaining how features like inheritance, virtual functions, and templates are implemented. It offers valuable insights for experienced C++ programmers who want to understand the language at a deeper level and write more efficient code. This book is for advanced users interested in the language's internals.
Tackles the challenging aspects of software architecture, including how to make decisions about coupling, modularity, and reusability in complex systems. It's valuable for experienced practitioners looking to deepen their understanding of architectural trade-offs that impact reusability.
While aimed at game developers, this book explores design patterns that are broadly applicable to creating reusable code in various domains. It provides practical examples and insights into solving common programming problems with patterns, which can help solidify understanding of how to apply patterns for reusability.
While .NET-specific, this book offers invaluable insights into designing reusable libraries and frameworks. The principles and guidelines discussed are applicable beyond the .NET ecosystem and provide a deep understanding of the considerations involved in creating reusable components for others to use. It's particularly useful for those interested in library or framework development.
Affectionately known as the "Dragon Book," this classic text on compiler design. While quite technical, it provides deep insights into how programming languages are processed and executed, contributing to a solid understanding of the underlying mechanisms of software. It is primarily for those seeking to deepen their understanding at a more theoretical level.
Covers a range of modern software engineering practices, many of which contribute to writing better, more reusable code, such as continuous integration, testing, and evolutionary design. It provides a broader context of how reusability fits into a disciplined development process.
Focuses on patterns for integrating enterprise applications, many of which involve creating reusable messaging components and services. It's relevant for understanding reusability in the context of building distributed systems and valuable reference for enterprise architects and developers.
This classic book addresses the challenges of designing and managing large-scale C++ software projects. It discusses principles and practices for creating maintainable and évolvable systems. While some of the specific technical details might be dated, the overall design principles remain relevant for architects and senior C++ developers working on large codebases.
Aims to guide readers through various C++ concepts, from basics to more advanced topics. It can serve as a comprehensive resource for those looking to solidify their understanding and explore different aspects of C++ programming. It is suitable for learners with some foundational knowledge.
Focuses specifically on modularity in Java, a language feature designed to improve code organization and reusability. It's highly relevant for understanding contemporary approaches to modular programming within a specific language ecosystem and how it contributes to reusability.
Debugging crucial skill for programmers, and this book provides practical techniques and strategies for finding and fixing errors efficiently. While not specific to C++, the principles are highly applicable and valuable for C++ developers. is useful for programmers of all levels looking to improve their debugging skills.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Modern C++ Templates In Depth.
What's New in Modern C++
Most relevant
Linux Embedded System Topics and Projects
Most relevant
Working with Objects in C++
Most relevant
Cloud Computing Concepts, Part 1
Most relevant
How to design a (SMTP, POP3) Mail server C++ Guided...
Most relevant
Make 10 GUI Applications in C++ using OOP Concepts
Most relevant
Linux System Programming Techniques & Concepts
Most relevant
Learn C/C++ Programming with 120+ Practical Examples
Most relevant
Arduino Programming and Hardware Fundamentals with...
Most relevant

Coursera Buyer Protection & Guarantee

Verified partner policies & purchase protections

Accredited University Partner
Free Trial & Audit

7-Day Free Trial & Free Audit

7-day free trial on monthly Coursera Plus subscriptions; free audit option available on most individual courses to explore video lectures and readings at no charge.

Return & Refund Policy

14-Day Refund Guarantee

14-day refund window on annual Coursera Plus subscriptions and single-course purchases prior to certificate issuance. Monthly subscriptions do not offer refunds once billed.

Buyer Protections

Verified Academic & Industry Partner

Accredited university and industry certifications (e.g. Stanford, Google, IBM, Yale), secure SSL payment processing, and verifiable digital certificate links.

Key Purchase Protections
14-day refund window on annual Coursera Plus and single courses
7-day free trial on monthly Coursera Plus subscriptions
Free course audit option for lectures and readings
Verified certificates from top universities & companies
OpenCourser Verified Partner Policy details last reviewed: 2026-10-22
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser