Kurs om

C++ Templates

Kurs om C++ templates, allt du kan tänkas vilja veta om detta intressanta och för C++ helt vitala teknikområde.

Det går knappast att skriva ett (icke-trivialt = seriöst) program i C++ utan att använda sig av färdiga templates. Huvuddelen av standardbiblioteket i C++ bygger på templates, såsom STL algorithms, iterators och containers. Emellertid, anses också templates vara komplicerat, framförallt att skriva egna funktioner eller klasser med hjälp av templates. Och för all del, helt trivialt är det ju inte.

Den här kursen lär dig allt du behöver veta för att inte längre tveka att skriva egna templates. Efter kursen kan du designa implementera egna templates till hjälp för dina kolleger och den organisation du jobbar för.

Snabbfakta

Namn
C++ Templates
Ämne
C++ och C
URI
cxx/cxx-templates
Längd
3 dagar
Nivå
Advanced
Målgrupp
Rutinerade C++ programmerare
Förkunskaper
Kunna programmera i C++
Programvara & Verktyg
  • GNU C++ Compiler, version 10 or later
  • JetBrains CLion IDE
  • Ubuntu Linux

Kursdatum

Här ser du vilka kursdatum som är tillgängliga. Klicka på en av datumknapparna för att anmäla dig till ett kurstillfälle. På kursen pratar läraren svenska, medan vårt kursmaterial alltid är författat på engelska.

Fjärrkurs

Du sitter bekvämt framför datorn och deltar i kursen via internet. Vi använder programvaran Zoom för alla våra fjärrkurser.

I priset ingår kursmaterial som PDF.

Pris: 15 000 kr + moms

Klassrumskurs

Du sitter bekvämt i ett av våra klassrum, vilka finns centralt placerade i Stockholms innerstad (Östermalmstorg).

I priset ingår tryckt kursmaterial (och som PDF), samt kaffe/te med smörgås på förmiddagen och kaffe/te med bulle på eftermiddagen.

Pris: 20 000 kr + moms

Just nu finns det inga datum tillgängligt. Titta förbi om några dagar eller kontakta oss och be oss lägga upp fler kursdatum.

Företagsanpassad Kurs

Om ni är tre eller fler personer från samma företags, kan ni beställa en företagsanpassad kurs. Då håller vi kursen på ett datum som passar er. Antingen på plats i era lokaler eller som en fjärrkurs. Vi kan också hålla den muntliga framställningen på engelska. Klicka på knappen nedan för att be om en offert.

Detta får du lära dig

Här är ett sammandrag i punktform av vad du får lära dig på kursen. Eftersom kursmaterialet är författat på engelska, så återger vi sammandraget också på engelska.

  • Function templates
  • Class templates
  • Variable templates
  • Variadic templated
  • Fold expressions
  • Non-type template parameters
  • Template template parameters
  • Perfect forwarding
  • Template instantiation vs. specialization
  • Argument deduction
  • SFINAE
  • Type traits
  • C++20 concepts

Kursinnehåll

Eftersom kursmaterialet är författat på engelska, så återger vi innehållet också på engelska.

Evolution of C++

Just a quick overview where C++ came from, its design criteria, evolution and finally, how to compile it for the exercises of the course.

Highlights of Modern C++

Essentials of the new standard, required to follow along in the course syllabus.

System Tools

Quick presentation of some tool-chain programs we are using during the course.

C++ Terminology

Short discussion of essential terms used in the standard and in this course, to avoid any conceptual confusions later.

Before Templates

Brief about how developers did implement generic code before templates was invented in C++.

Function Templates

How to write function templates.

Class Templates

How to write class templates.

Non-Type Template Parameters (NTTP)

Templates parameters can be lots of other things, besides of plain types. Here we discuss the all.

Variable Templates and constexpr

Since C++14 we can make read-only variables as template, which means the actual type can be determined at instantiation time. In this chapter we also discuss compile-time functions (constexpr ) and C++17 if constexpr statements.

Variadic Templates

Templates can be declared with an unspecified number of parameters. In this chapter we show you how to deal with parameter and argument packs, as well as fold expressions.

Template Specialization

How to write special versions of a template entity.

Template Instantiation

Discussion of how the compiler decides of what code to generate. What we mean in more detail with instantiation and specialization.

Argument Deduction

How the compiler performs pattern matching in order to figure out the actual types of a template invocation.

Programming with Types

In this chapter we step-by-step implements a generic print function, that uses type-dependent print strategies.

Type Traits

The standard library contains many utility functions for manipulating with types in template entities, such as type predicates, type transformers and type inspectors. In this chapter we first show how to implement some of them to understand how it works, then we present some of them in <type_traits>.

SFINAE

The acronym SFINAE, which means Substitution Failure Is Not An Error, is an essential part of the toolbox when implementing meta-functions.

C++20 Concepts

With concepts in C++20, we can write generic functions much easier and safely. The compiler can also much better tell us what is wrong when we use it wrongly. This is because with concepts we specify the criteria of the allows argument types to a function or member function.