# Bienvenue

Bienvenue sur ce cours de C++ (version C++2017) !

Il est destiné aux personnes ayant déjà programmé dans d'autres langages, et de préférence avec une mini-expérience en C ou en C++ : les concepts de fonctions, variables, types, classes et pointeurs ne seront pas expliqués.

J'ai présenté ce cours à l'oral, donc le contenu en ligne est assez théorique : je vous invite à regarder d'autres exemples si nécessaire et à essayer les challenges proposés. J'ai également créé un dépôt GitHub où je propose quelques exercices : <https://github.com/Dwarfobserver/Exercices-Cpp> . Il faut compléter le code pour passer tous les tests. Ce dépôt contient également les solutions des challenges.

Les challenges ne sont pas triviaux, et touchent généralement à plusieurs cours à la fois.

Le cours est organisé en petits chapitres classés dans une de ces trois catégories :

* Le langage : La compilation, les librairies, les Undefined Behaviors, ...
* Les abstractions : L'orienté objet, les templates, les exceptions, la concurrence, ...
* Les performances : Les accès mémoire, la vectorisation, le temps de compilation, ...

Si vous ne savez pas quoi lire en particulier, voici l'ordre dans lequel je les ai présentés :

1. Langage           - la compilation
2. Abstractions    - l'orienté objet
3. Performances - introduction
4. Performances - les accès mémoire
5. Performances - les options du compilateur
6. Abstractions    - les templates (1/2)
7. Performances - les indices du compilateur
8. Performances - la vectorisation
9. Langage           - les catégories de classes
10. Abstractions    - les move & smart pointers
11. Abstractions    - les exceptions
12. Langage           - les Undefined Behaviors
13. Abstractions    - les lambdas & opérateurs
14. Abstractions    - le multithreading
15. Abstractions    - les templates (2/2)
16. Language         - les bibliothèques
17. Performances - le temps de compilation

Si vous avez des questions, des remarques ou autre, vous pouvez me contacter via mon adresse mail : <sidney.congard@gmail.com>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cours-cpp.gitbook.io/resources/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
