In the following, you can find a (partial) archive of the seminar "C++: discovering and teaching modern C++17 programming" that was held in the summer term 2018 at Technische Universität München. The authors agreed with publication of their materials, however, the copyright remains with them.
Topic list
Date | Student | Topic | Materials |
---|---|---|---|
April 10, 2018 | V. Markova | Modern C++ Trivia | Presentation Report |
May 8, 2018 | D. Riedel | Constexpr and Inline Variables in C++17 | Presentation Report |
May 15, 2018 | P. Herrle | Lambda Expressions in C++14 and C++17 (part 1) | Presentation Report |
May 29, 2018 | B. Seidl | Lambda Expressions in C++14 and C++17 (part 2) | Presentation Report |
June 5, 2018 | C. Honal | Fold Expressions in C++17 | Presentation Report |
June 5, 2018 | T. Jülg | Templates with Strings and auto in C++17 | Presentation Report |
June 19, 2018 | P. Bock | Concurrency in C++17: Parallel STL | Presentation Report |
June 26, 2018 | A. Font Calverons | Splicing for Maps and Sets in C++17 | Presentation Report |
July 3, 2018 | C. Kolb | Coroutines in C++20 | Presentation Report |
July 3, 2018 | M. Wechner | Thoughts on Generative Programming in C++: Metaclasses | Presentation Report |
July 10, 2018 | D. Below | SFINAE, std::enable_if and Compile-Time Reflection | Presentation Report |
July 10, 2018 | E. V. Jansson | A C++ Concepts Primer: defining and applying constraints | Presentation |
Literature and Weblinks
- Nicolai Josuttis: C++17 - The Complete Guide. leanpub 2017.
- Link: C++17 - The Complete Guide
- Copies of excerpts available upon request
- Scott Meyers: Effective Modern C++. O'Reilly Media 2014.
- Link: Effective Modern C++'
- Copies of excerpts available upon request
- Some copies available in Lehrbuchsammlung of university library
- Bjarne Stroustrup: The C++ Programming Language (4th edition). Addison Wesley, 2013.
- Link: The C++ Programming Language
- Copies of excerpts available upon request
- Some copies available in Lehrbuchsammlung of university library
- Rainer Grimm: Concurrency with Modern C++
- Link: Concurrency with Modern C++
- Copies of excerpts available upon request
- Guidelines Support Library
- Microsoft Implementation: https://github.com/Microsoft/GSL
- Stroustrup, Sutter et al.: Cpp Core Guidelines
- Coroutines TS
- Gor Nishanov: Coroutines TS N4723
- Constraints and Concepts Summary (before the drafts below):
- Working Draft of the C++20 Programming Language (N4713):
- Wording Paper for the C++20 Concept Extension (P0734R0):
- ISO C++ WG21 Mailing List and Repository of Standing Documents:
- Type Traits, SFINAE and Compile-Time Reflection in C++11/14:
- List of traits in C++14: en.cppreference.com/w/cpp/types
- "SFINAE and std::enable_if" by Eli Bendersky
- Metaclasses Proposal by by H. Sutter (P0707R1):
- Meta: Thoughts on Generative C++ and Metaclasses:
- Modern CMake Links
- Starting point: https://github.com/onqtam/awesome-cmake
- Starting point: https://github.com/onqtam/awesome-cmake
Tools
Tools for creating slides and written report
- ShareLaTeX @ TUM (use beamer for slides)
Tools for live exercises
- C++ shell (only supports up to C++14)
- JDoodle C++ (should support C++17)
- Wandbox (supports C++17)
- Compiler Explorer (Useful to demonstrate Compiler optimizations by showing produced assembly, however cannot execute your program)
Compiler info
See also Compiler Support
Compiler | C++14 support | C++17 support |
---|---|---|
GCC | from version 5 | most parts in version 7 |
Clang | from version 3.4 | most parts in version 4 |
MSVC | from version 19.10 | some parts in version 19.12 |
Tips and tricks
Typesetting C++ in LaTeX
Something you will likely notice pretty early on when writing your report (on standard LaTeX, as Knuth and Lamport intended), is that the default way LaTeX typesets "C++" is horrible. Look at the top-most image below to see this atrocity. There are many posts on the internet on the issue, e.g. on TeX StackExchange, with different solutions (with varying degrees of quality). A simple way to solve it is to use e.g. C\texttt{++}
everywhere, but doesn't work in all cases (e.g. in the report title). I've instead used the solution here, which gives the bottom-most result.
\usepackage{relsize} % Paste this somewhere at the start of your main LaTeX document file.
\newcommand\Cpp{C\nolinebreak[4]\hspace{-.05em}\raisebox{.4ex}{\relsize{-3}{\textbf{++}}}}
This is how you typeset \Cpp\ a bit better than the default way LaTeX does it, cool right?