{"id":4778,"date":"2016-06-04T20:07:00","date_gmt":"2016-06-04T20:07:00","guid":{"rendered":"https:\/\/www.modernescpp.com\/index.php\/modern-c\/"},"modified":"2016-06-04T20:07:00","modified_gmt":"2016-06-04T20:07:00","slug":"modern-c","status":"publish","type":"post","link":"https:\/\/www.modernescpp.com\/index.php\/modern-c\/","title":{"rendered":"Modernes C++"},"content":{"rendered":"<p>This page is the starting point for my blog Modernes C++. A simple overview of my existing and upcoming posts.<\/p>\n<p><!--more--><\/p>\n<p>This overview serves two purposes. At first, the structure gives you in one view an overview, which posts are already written and how you can find them. At second, I give you an outline of all posts, which will be written. I will successively refine the outline to make the future of this post transparent. This purpose is a more challenging task for me.<\/p>\n<h2><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-4777\" src=\"https:\/\/www.modernescpp.com\/wp-content\/uploads\/2016\/06\/BackgroundCpp.jpg\" alt=\"BackgroundCpp\" width=\"600\" height=\"352\" srcset=\"https:\/\/www.modernescpp.com\/wp-content\/uploads\/2016\/06\/BackgroundCpp.jpg 413w, https:\/\/www.modernescpp.com\/wp-content\/uploads\/2016\/06\/BackgroundCpp-300x176.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/h2>\n<h2><span class=\"ez-toc-section\" id=\"Multithreading_in_modern_C\"><\/span>Multithreading in modern C++<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/multithreading-in-modern-c\">Overview<\/a><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"C_memory_model\"><\/span>C++ memory model<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-memory-model\">Overview<\/a><\/li>\n<li>Atomic data types\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-atomic-flag\">std::atomic_flag<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-atomic-boolean\">std::atomic<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/atomics\">std::atomic<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/synchronization-and-ordering-constraints\">Synchronization and ordering constraints<\/a><\/li>\n<li>The different C++ memory models\n<ol>\n<li>Sequential consistency\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/sequential-consistency\">Theory<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/sequential-consistency-applied\">Practice<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Acquire-release semantic\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/acquire-release-semantic\">Synchronization and ordering constraints<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/transivity-of-the-acquire-release-semantic\">Transitivity<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/memory-order-consume\">The special case std::memory_order_consume<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/acquire-release-semantic-the-typical-misunderstanding\">The typical error<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/sleep-and-wait\">Wait and Sleep<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Fences<a href=\"https:\/\/www.modernescpp.com\/index.php\/fences-as-memory-barriers\"><\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/fences-as-memory-barriers\">Memory barriers<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/acquire-release-fences\">Acquire- and release memory barriers<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Algorithms\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/blocking-and-non-blocking\">Blocking and non-blocking algorithms<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/aba-a-is-not-the-same-as-a\">ABA &#8211; A is not the same as A<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"The_threading_interface\"><\/span>The threading interface<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>Threads\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/thread-creation\">Creation<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/threads-lifetime\">Lifetime<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/data-for-threads\">Arguments<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/threads-sharing-data\">Sharing data<\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-risk-of-mutexes\">Risks <\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/prefer-locks-to-mutexes\">Prefer Locks to Mutexes<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/reader-writer-locks\">Reader-Writer locks<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/thread-safe-initialization-of-data\">Safe initialization<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/thread-local-data\">Thread-local data<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/condition-variables\">Condition variables<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/tasks\">Tasks<\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/asynchronous-function-calls\">std::async<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/asynchronous-callable-wrappers\">std::packaged_task<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/promise-and-future\">std::promise and std::future<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-special-futures\">The special futures std::async<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/thread-synchronization-with-condition-variables-or-tasks\">Condition variables versus tasks for the synchronization of threads<\/a><\/li>\n<li>Challenges\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/race-condition-versus-data-race\">Data races versus race conditions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/malicious-race-conditions\">Malicious data races<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/blocking-and-non-blocking\">Blocking and non-blocking algorithms<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Multithreading_with_C17_and_C20\"><\/span>Multithreading with C++17 and C++20<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/multithreading-in-c-17-and-c-20\">An overview<\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/parallel-algorithm-of-the-standard-template-library\">Parallel algorithm of the Standard Template Library<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/atomic-smart-pointers\">Atomic smart pointers<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/std-future-extensions\">std::future extensions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/latches-and-barriers\">Latches and barriers<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/coroutines\">Coroutines<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/transactional-memory\">Transactional memory<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/task-blocks\">Task blocks<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/a-short-detour-executors\">Executors<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-end-of-the-detour-unified-futures\">Unified Futures<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/CAFwjH\">std:::jthread<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Application_of_multithreading\"><\/span>Application of multithreading<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>The time library\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-time-library\">Overview<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/time-point\">Time point<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/time-duration\">Time duration<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-three-clocks\">Clock<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/sleep-and-wait\">Wait and Sleep<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Ongoing optimization with CppMem\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/ongoing-optimization\">Context of ongoing optimization<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/cppmem-an-overview\">Introduction to CppMem<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/ongoing-optimization-2\">Non-atomic variables<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/ongoing-optimization-locks\">Locks<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/ongoing-optiimization-sequential-consistency-with-cppmem\">Sequential consistency<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/ongoing-optimization-acquire-release-semantic-with-cppmem\">Acquire-release semantic<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/ongoing-optimization-a-data-race-with-cppmem\">Acquire-release semantic with a data race<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/ongoing-optimization-relaxed-semantic-with-cppmem\">Relaxed semantic<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/ongoing-optimization-locks\">volatile<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Singleton\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/thread-safe-initialization-of-a-singleton\">Thread safe initialization of a singleton<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Calculating the sum of a <span style=\"font-family: courier new,courier;\">std::vector<\/span>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/single-threaded-sum-of-the-elements-of-a-vector\">Single threaded<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/multithreaded-summation-of-a-vector\">Multithreaded with shared variables<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/multithreaded-summation-with-minimal-synchronization\">Multithreaded with minimal synchronization<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/my-conclusion-summation-of-a-vector-in-three-variants\">My conclusion<\/a><\/li>\n<\/ol>\n<\/li>\n<li>The Dining Philosophers Problem\n<ol>\n<li><a href=\"https:\/\/bit.ly\/DiningPhilosophers1\">Dining Philosophers Problem I<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/dining-philiosophers-problem-ii\">Dining Philosophers Problem II<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/dining-philiosophers-problem-iii\">Dining Philosophers Problem III<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Embedded_programming_with_C\"><\/span>Embedded programming with C++<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/requirements-of-embedded-programming\">Requirements for embedded programming<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/myths\">Myths <\/a>and<a href=\"https:\/\/www.modernescpp.com\/index.php\/facts\"> facts<\/a><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"High_safety_requirements\"><\/span><a id=\"HighSafetyRequirements\">High safety requirements<\/a><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>C++11\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/automatically-inititialized\">Automatic type deduction with&nbsp;<\/a><span style=\"font-family: courier new,courier;\"><a href=\"https:\/\/www.modernescpp.com\/index.php\/automatically-inititialized\">auto<\/a><\/span><\/li>\n<li>Prevent narrowing with&nbsp;<a href=\"https:\/\/www.modernescpp.com\/index.php\/initialization\"> {} initialization<\/a><\/li>\n<li>Guarantees at compile time with <span style=\"font-family: courier new,courier;\">static_assert<\/span> and the type-traits library\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/statically-checked\">static_assert<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/more-and-more-save\">Continuously improvement- An introductory example to the type-traits library<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/check-types\">Check types<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/compare-and-modify-types\">Compare and modify types<\/a><\/li>\n<\/ol>\n<\/li>\n<li>User-defined literals\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/user-defined-literals\">Type safe calculation with user-defined literals<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/raw-and-cooked\">Raw and cooked<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/strongly-typed-enums\">Strongly-Typed Enumerations<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/override-and-final\"><span style=\"font-family: courier new,courier;\">override<\/span> and <\/a><span style=\"font-family: courier new,courier;\"><a href=\"https:\/\/www.modernescpp.com\/index.php\/override-and-final\">final<\/a><\/span><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-null-pointer-constant-nullptr\">The null pointer constant <\/a><span style=\"font-family: courier new,courier;\"><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-null-pointer-constant-nullptr\">nullptr<\/a><\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Performance_matters\"><\/span>Performance matters<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>C++98\n<ol>\n<li><span style=\"font-family: courier new,courier;\"><a href=\"https:\/\/www.modernescpp.com\/index.php\/inline\">inline<\/a><\/span><\/li>\n<\/ol>\n<\/li>\n<li>C++11\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/constant-expressions-with-constexpr\">Constant expressions<\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/constexpr-variables-and-objects\">Variables and objects<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/constexpr-functions\">Functions<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/type-traits-performance-matters\">Optimization with the type-traits library<\/a><\/li>\n<li>Multithreading interface<\/li>\n<li>C++ memory model<\/li>\n<li>Hashtables\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/hash-tables\">Overview<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/associative-containers-a-simple-performance-comparison\">A simple performance comparison<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/hash-functions\">Hash functions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/buckets-capacity-and-load-factor\">Buckets, capacity and, load factor<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/generalized-plain-old-data\">Generalized PODs<\/a><\/li>\n<li><span style=\"font-family: courier new,courier;\">noexcept<\/span><\/li>\n<\/ol>\n<\/li>\n<li>C++14\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/constexpr-functions\">constexpr functions<\/a><a href=\"https:\/\/www.modernescpp.com\/index.php\/blog\/constexpr-funktionen\"> <\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Careful_handling_of_resources\"><\/span>Careful handling of resources<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/careful-handling-of-resources\">Overview<\/a><\/li>\n<li>Automatic memory management\n<ol>\n<li>Smart pointers\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/memory-and-performance-overhead-of-smart-pointer\">Memory and performance overhead<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/std-unique-ptr\">std::unique_ptr<\/a><\/li>\n<li><span style=\"font-family: courier new,courier;\">std::shared_ptr<\/span>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/std-shared-ptr\">std::shared_ptr<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/specialities-of-std-shared-ptr\">Specialities<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/std-weak-ptr\">std::weak_ptr<\/a><\/li>\n<\/ol>\n<\/li>\n<li>The STL containers\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/automatic-memory-management-with-containers\"><span style=\"font-family: courier new,courier;\">std::vector<\/span> and <\/a><span style=\"font-family: courier new,courier;\"><a href=\"https:\/\/www.modernescpp.com\/index.php\/automatic-memory-management-with-containers\">std::string<\/a><br \/><\/span><\/li>\n<li><span style=\"font-family: courier new,courier;\"><a href=\"https:\/\/www.modernescpp.com\/index.php\/std-array-dynamic-memory-no-thanks\">std::array<\/a><\/span><span style=\"font-family: courier new,courier;\"><\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>C++ idioms\n<ol>\n<li>Move semantic\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/copy-versus-move-semantic-a-few-numbers\">Copy versus Move semantics<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/move-semantic-tow-nice-properties\">Two Nice Properties<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/perfect-forwarding\">Perfect forwarding<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/garbage-collectio-no-thanks\">Garbage Collection &#8211; No Thanks<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/explicit-memory-management\">Explicit memory management<\/a>\n<ol>\n<li>Overloading <span style=\"font-family: courier new,courier;\">operator new a<\/span>nd<span style=\"font-family: courier new,courier;\"> delete <\/span><span style=\"font-family: courier new,courier;\"><br \/><\/span>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/overloading-operator-new-and-delete\">Part 1<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/overloading-operator-new-and-delete-2\">Part 2<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/memory-management-with-std-allocator\"><span style=\"font-family: courier new,courier;\">std::allocator<\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/strategies-for-the-allocation-of-memory\">Strategies for the allocation of memory<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/pros-and-cons-of-the-various-memory-management-strategies\">Pros and cons of the various memory allocation strategies<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/memory-pool-allocators-with-jonathan-mueller\">Memory Pool Allocators by Jonathan M\u00fcller<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Functional_programming_with_C\"><\/span>Functional programming with C++<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/objectoriented-generic-and-functional-programming\">Overview<\/a><\/li>\n<li>Functional Feature in C++\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/functional-in-c-98\">C++98<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/functional-in-tr1-and-c-11\">TR1 and C++11<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/functional-in-c-dispatch-table\">Dispatch table and generic Lambdas<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/functional-in-c-17-and-c-20\">C++17 and C++20<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-definition-of-functional-programming\">The definition<\/a><\/li>\n<li>Characteristics of functional programming\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/first-class-functions\">First-class functions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/higher-order-functions\">Higher-order functions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/immutable-data\">Immutable data<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/pure-functions\">Pure functions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/recursion-list-manipulation-and-lazy-evaluation\">Recursion<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/recursion-list-manipulation-and-lazy-evaluation\">Manipulation of lists<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/recursion-list-manipulation-and-lazy-evaluation\">Lazy evaluation<\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-is-still-lazy\">CRTP<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/expression-templates\">Expression templates<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>Functional programming with C++17 and C++20\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/fold-expressions\">Fold expressions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-new-ranges-library\">The new ranges library<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/concepts-lite\">Concepts<\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/concepts-placeholders\">Placeholders<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/monads-in-c\">Monads in C++<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Design_Patterns_and_Architectural_Patterns\"><\/span>Design Patterns and Architectural Patterns<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/design-patterns-and-architectural-patterns-a-first-overview\">A First Overview<\/a><\/li>\n<li>Introduction\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/an-introduction-into-design-patterns\">The Advantages of Patterns<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/history-and-classification-of-patterns\">The History of Patterns<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/classification-of-patterns\">Classification of Design Patterns<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/classification-of-patterns-2\">Classification of Patterns<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Terminology\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-structure-of-patterns\">The Structure of Patterns<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/about-pattern-relations-algorithms-frameworks\">About Algorithms, Frameworks, and Pattern Relations<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/anti-patterns\">Anti-Patterns<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Design Patterns\n<ol>\n<li>Creational Patterns\n<ol>\n<li>Factory Method \n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/factory-method\">Factory Method<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/factory-method-2\">Slicing and Ownership Semantics<\/a><\/li>\n<\/ol>\n<\/li>\n<li>The Singleton\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/creational-patterns-singleton\">The Singleton<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/singleton-pros-and-cons\">Pros and Cons<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-singleton-the-alternatives\">The Alternatives: The Monostate Pattern and Dependency Injection<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>Structural Patterns\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-adapter-pattern\">The Adapter Pattern<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-bridge-pattern\">The Bridge Pattern<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-decorator-pattern\">The Decorator Pattern<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-composite-pattern\">The Composite Pattern<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-facade-pattern\">The Facade Pattern<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-proxy-pattern\">The Proxy Pattern<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Behavioral Pattern\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-visitor-pattern\">The Visitor Pattern<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-template-method\">The Template Method<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-strategy-pattern\">The Strategy Pattern<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>Idioms\n<ol>\n<li>General\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-copy-and-swap-idiom\">The Copy-and-Swap Idiom<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/partial-function-application\">Partial Function Application<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/argument-dependent-lookup-and-hidden-friends\">Argument-Dependent Lookup and the Hidden Friend Idiom<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Classes\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/rule-of-zero-or-six\">The Rule of Zero, or Six<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/regular-type\">Regular Types<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/value-objects\">Value Objects<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-null-object-pattern\">The Null Object Pattern<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-iterator-protocol\">The Iterator Protocol<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/covariant-return-type\">Covariant Return Type<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Polymorphism\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/idioms-for-polymorphism-and-templates\">Idioms for Polymorphism and Templates<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Templates\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/idioms-for-polymorphism-and-templates\">Idioms for Polymorphism and Templates<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>Architectural Patterns\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/how-can-you-recognise-a-good-software-architecture\">How can you recognise a good software architecture? <\/a>by Alexander Eisenhut<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/architectural-patterns\">Architectural Patterns<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/layers\">Layers<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/pipes-and-filters\">Pipes-and-Filters<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/broker\">Broker<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/model-view-controller\">Model-View-Controller<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/reactor\">Reactor<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Concurrency\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/concurrency-patterns\">Concurrency Patterns<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/dealing-with-sharing\">Dealing with Sharing<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/dealing-with-mutation-locking\">Dealing with Mutation: Locking<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/dealing-with-mutation-thread-safe-interface\">Dealing with Mutation: The Thread-Safe Interface<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/dealing-with-mutation-guarded-suspension\">Dealing with Mutation: Guarded Suspension<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/active-object\">Active Object<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"C17\"><\/span>C++17<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/cpp17-core\">Core language<\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-17-more-details-to-the-core-language\">More details<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-17-what-s-new-in-the-library\">Library<\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-17-more-details-about-the-library\">std::byte<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-17-more-details-about-the-library\">std::filesystem<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-17-avoid-copying-with-std-string-view\">std::string_view<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-17-constructed-in-place\">std::any, std::optional, and std::variant<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-17-new-algorithm-of-the-standard-template-library\">The New Algorithm of the STL<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-17-the-improved-interface-of-the-associative-containers\">Improved associative containers and uniform container access<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/parallel-algorithms-of-the-stl-with-gcc\">Parallel Algorithms of the STL with the GCC compiler<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/performance-of-the-parallel-stl-algorithmn\">Performance of the Parallel STL Algorithms<\/a><\/li>\n<\/ol>\n<div>&nbsp;<\/div>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"C20\"><\/span>C++20<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2MXaezM\">The Next Big Thing: C++20<\/a><\/li>\n<li>Overview\n<ol>\n<li><a href=\"http:\/\/bit.ly\/3471cqH\">The Big Four<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2PKLKge\">The Core Language<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2Ctduy3\">The Library<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2r1SCvc\">Concurrency<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Details\n<ol>\n<li>Concepts\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2s7giyL\">Two Extremes and the Rescue with Concepts<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-20-concepts-the-details\">The Details<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2RArE9c\">The Placeholder Syntax<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/34nKOSv\">Syntactic Sugar<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2EJPSGD\">What we don&#8217;t get<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2TijbbD\">Predefined Concepts<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2NL0yJN\">Define Concepts<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/define-concepts\">Define Concepts (Logical Combination of other Concepts or Compile-Time Predicates)<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/defining-concepts-with-requires-expressions\">Defining Concepts with Requires Expressions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/using-requires-expression-in-c-20-as-a-standalone-feature\">Using Requires Expressions in C++20 as a Standalone Feature<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2RxIDc1\">Define the Concepts Equal and Ordering<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/37TH2Ty\">Define the Concepts Regular and SemiRegular<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/test-types-with-concepts\">Check Types with Concepts &#8211; The Motivation<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/check-types-with-concepts\">Check Types with Concepts<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2vgAQqe\">Concepts in C++20: An Evolution or a Revolution?&nbsp;<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Ranges Library\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2V8Fbqz\">The Ranges Library<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/32iY77s\">Functional Pattern with the Ranges Library<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-ranges-library-in-c-20-a-deep-dive\">The Ranges Library in C++20: More Details<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/projections-with-ranges\">Projections with Ranges<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/sentinels-and-concepts\">Sentinels and Concepts with Ranges Algorithms<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/improved-iterators-with-ranges\">Improved Iterators with Ranges<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2TyfqNX\">Pythonic with the Ranges Library<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2wI2z3G\">Pythons range Function, the Second<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2QhUQAw\">Pythons map Function<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Coroutines\n<ol>\n<li><a href=\"https:\/\/bit.ly\/3dl4VGE\">A First Overview<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-20-coroutines-more-details\">More Details<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-20-an-infinite-data-stream-with-coroutines\">An Infinite Data Stream with Coroutines<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/ThreadSynchronizationCoroutines\">Thread Synchronization with Coroutines<\/a><\/li>\n<li>cppcoro\n<ol>\n<li><a href=\"https:\/\/bit.ly\/CoroutinesCppcoro\">Coroutines with cppcoro<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/CoroutineAbstractions\">Powerful coroutines with cppcoro<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/ThreadPoolsCppcoro\">Thread Pools with cppcoro<\/a><\/li>\n<\/ol>\n<\/li>\n<li><code>co_return<\/code><a href=\"https:\/\/bit.ly\/3kw84Ya\">:<\/a>\n<ol>\n<li><a href=\"https:\/\/bit.ly\/3kw84Ya\"> Implementing Simple Futures with Coroutines<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/lazy-futures-with-coroutines-in-c-20\">Lazy Futures with Coroutines<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/executing-a-future-in-a-separate-thread-with-coroutines\">Executing a Future in a Separate Thread<\/a><\/li>\n<\/ol>\n<\/li>\n<li><code>co_yield:<\/code>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/an-infinite-data-stream-with-coroutines-in-c-20\">An Infinite Data Stream with Coroutines<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/a-generic-data-stream-with-coroutines-in-c-20\">A Generic Data Stream with Coroutines<\/a><\/li>\n<\/ol>\n<\/li>\n<li>co_await\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/starting-jobs-with-coroutines\">Starting Jobs with Coroutines<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/automatically-resuming-a-job-with-coroutines\">Automatically Resuming a Job with Coroutines on a Separate Thread<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>Modules\n<ol>\n<li><a href=\"https:\/\/bit.ly\/cpp20-module\">The Advantages of Modules<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/SimpleMathModul\">A Simple math Modul<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/ModuleInterfaceUnitModuleImplementationUnit\">Module Interface Unit and Module Implementation Unit<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/DivideModules\">Structure Modules<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/ModulesOpenQuestions\">Open Questions to Modules<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-20-modules-private-module-fragment-and-header-units\">Private Module Fragment and Header Units<\/a><\/li>\n<\/ol>\n<\/li>\n<li>The Core Language\n<ol>\n<li>The Three-Way Comparison Operator\n<ol>\n<li><a href=\"https:\/\/bit.ly\/ThreeWayComparison\">The Three-Way Comparison Operator<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/MoreDetailsToSpaceship\">More Details to the Spaceship Operator<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/OptimizedComparisonSpaceship\">Optimized Comparision with the Spaceship Operator<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/bit.ly\/DesignatedInitializers\">Designated Initializers<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/ConstevalAndConstinit\">consteval and constinit<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/StaticInitializationOrderFiasco\">Solving the Static Initialization Order Fiasco<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/TemplateImprovementsCpp20\">VariousTemplate Improvements with C++20<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/TemplateLambdas\">More Powerful Lambdas with C++20<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/MoreLambdaCpp20\">More Lambda Features with C++20<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/AttributesCpp20\">New Attributes with C++20<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/VolatileCpp20\">volatile and other Small Improvements<\/a><\/li>\n<\/ol>\n<\/li>\n<li>The Library\n<ol>\n<li><a href=\"http:\/\/bit.ly\/StdSpan\">std::span in C++20: Bounds-Safe Views for Sequences of Objects<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/ConstexprVectorString\">constexpr std::vector and std::string in C++20<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/MoreConvenienceFunctionsCpp20\">More Convenience Functions for Containers with C++20<\/a><\/li>\n<li>std::format\n<ol>\n<li><a href=\"http:\/\/bit.ly\/stdFormat\">The Basics<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/FormatUserDefined\">Extend std::format for User-Defined Types<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"http:\/\/bit.ly\/MoreAndMoreUtilities\">More and More Utilities<\/a><\/li>\n<li>Calendar and Time-Zone\n<ol>\n<li><a href=\"https:\/\/bit.ly\/31D62NN\">Time of Day<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/380rmR9\">Calendar Date<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3ld6WZ6\">Handling Calendar Dates<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3lDN1Ta\">Time-Zones<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/bit.ly\/3lXrkxN\">Safe Comparison of Integrals<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3llNpoH\">Feature Testing<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3mPhkXS\">Bit Manipulation<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Concurrency\n<ol>\n<li>Atomics\n<ol>\n<li><a href=\"https:\/\/bit.ly\/3oPICOs\">References<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3nF8r3f\">Synchronization with Atomics<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3oygijV\">Performance Comparison of Condition Variables and Atomics<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/barriers-in-c-20\">Barriers and Atomic Smart Pointers<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/bit.ly\/3bPXFEC\">Semaphores<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/39eH23G\">Latches<\/a><\/li>\n<li><a href=\"https:\/\/heise.de\/-5041229\">Barriers<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3cQaizL\">Cooperative Interruption of a Thread<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3pjT2Wo\">std::jthread<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3k8tvyq\">Synchronized Output Streams<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"C23\"><\/span>C++23<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/ranges-improvements-with-c-23\">Range Improvements with C++23<\/a><\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"C_Core_Guidelines\"><\/span><a id=\"CppCoreGuidelines\">C++ Core Guidelines<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/what-is-modern-c\">Two highly valuable resources <\/a><span id=\"transmark\"><\/span><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/why-do-we-need-guidlines-for-modern-c\">Why do we need guidelines for modern C++?<\/a><\/li>\n<li>The C++ Core Guidelines:\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-the-philosophy\">The Philosophy<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-interfaces\">Interfaces I<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-interfaces-ii\">Interfaces II<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guideline-the-guidelines-support-library\">Guideline Support Library<\/a><\/li>\n<li>Functions\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-functions\">Definitions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-how-to-pass-function-parameters\">Parameters: Syntax<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-semantic-of-function-parameter-and-return-values\">Parameters: Semantic<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Classes\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-class-rules\">General rules<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-constructors-assignments-and-desctructors\">The Rule of Zero, Five, or Six<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-destructor-rules\">Destructors<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-constructors\">Constructors<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/1Fz59Q\">Copy and Move<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-comparison-swap-and-hash\">Comparison, swap, and hash<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-function-objects-and-lambas\">Function objects and Lambdas<\/a><\/li>\n<li>Hierarchies\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-class-hierarchies\">General rules<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-more-rules-to-class-hierarchies\">Special rules I<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-the-remaining-rules-to-class-hierarchie\">Special rules II<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-accessing-objects-in-a-hierarchy\">Accessing Objects<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Overloading\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-for-overloading-and-overload-operators\">Overloading and Overload Operators I<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-more-rules-to-overloading\">Overloading and Overload Operators II<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/goo.gl\/WaohAC\">Unions<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-for-enumerations\">Enums<\/a><\/li>\n<li>Resources\n<ol>\n<li><a href=\"https:\/\/goo.gl\/uBFnwz\">General Rules<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-allocating-and-deallocating\">Allocation and Deallocation of Memory<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-to-smart-pointers\">Smart Pointers<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-passing-smart-pointer\">Passing Smart Pointers<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Expressions and Statements\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-for-expressions-and-statements\">Declarations<\/a>&nbsp;<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-declarations-and-initialisations\">Declarations and Initialisations<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-more-rules-for-declarations\">More Rules for Declarations<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-for-expressions\">Expressions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules\">Expressions (Pointers)<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-for-conversions-and-casts\">Conversions and Casts<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-do-s-and-don-ts\">Rules about Don&#8217;ts (std::move and slicing)<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-for-statements\">Rules for Statements<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-to-switch-or-not-to-switch-that-is-the-question\">To Switch or not to Switch, that is the Question<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-more-about-control-structures\">More about Control Structures<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-to-statements-and-arithmetic-rules\">Arithmetic Rules<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Performance\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-to-performance\">Rules about Performance<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-more-rules-to-performance\">More Rules about Performance<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-the-remaining-rules-to-performance\">The Remaining Rules about Performance<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Concurrency and Parallelism\n<ol>\n<li><a href=\"https:\/\/goo.gl\/GpvmGT\">Rules about Concurrency and Parallelism<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-more-rules-to-concurrency-and-parallelism\">More Rules about Concurrency and Parallelism<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/TmHfVh\">Tools to Validate Concurrent-Code<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/GsFWPd\">Sharing Data between Threads<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/bD6gnk\">Taking Care of your Child<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-the-remaining-rules-to-concurrency\">More Traps in the Concurrency<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-be-aware-of-the-traps-of-condition-variables\">Be Aware of the Traps of Condition Variables<\/a><\/li>\n<li><a href=\"http:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-concurrency-and-lock-free-programming\">Concurrency and lock-free Programming<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-the-rules-to-lock-free-programming\">The Resolution of the Riddle<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-the-remaining-rules-to-lock-free-programming\">The Remaining Rules of lock-free Programming<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Error Handling\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-to-error-handling\">Rules for Error Handling<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-a-detour-to-contracts\">A Short Detour to Contracts in C++20<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-the-noexcept-specifier-and-operator\">The noexcept Specifier and Operator<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-to-exception-handling\">Rules about <\/a><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-to-exception-handling\">E<\/a><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-to-exception-handling\">xception<\/a><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-to-exception-handling\"> Handling<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-when-you-can-t-throw-an-exception\">finally in C++<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/2ugQXq\">goto considered Evil<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-for-constants-and-immutability\">Constants and Immutability<\/a><\/li>\n<li>Templates and Generic Programming\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-for-templates-and-generic-programming\">Rules for Templates and Generic Programming<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-type-erasure\">Type Erasure<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-type-erasure-with-templates\">Type Erasure with Templates<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/FGZ8fT\">Better Specific or Generic?<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-rules-for-the-usage-of-concepts-2\">Usage of Concepts<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/quajuA\">Definition of Concepts<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/XM5Q8P\">Definition of Concepts 2<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/pvYAcx\">Pass Function Objects as Operations<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/Ew8wsW\">Template Interfaces<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/D7qKDc\">Regular and SemiRegular Types<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/NxGe2m\">Surprises with Argument-Dependent Lookup<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/DRHeKL\">Template Definitions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-specialisation-of-templates\">Ordering of User-Defined Types<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/4i3Tjm\">Templates and Hierarchies<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/78Ai6K\">Rules for Variadic Templates<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/GtDSfd\">Rules for Template Metaprogramming<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-programming-at-compile-time\">Programming at Compile Time<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-programming-at-compile-time-with-the-type-traits\">Programming at Compile Time with the Type-Traits<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-programming-at-compile-time-with-type-traits-ii\">Programming at Compile Time with the Type-Traits (The Second)<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/c2SmXX\">Programming at Compile Time with constexpr<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/iyk3eX\">Other Template Rules<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/os1iQ5\">Surprise Includes with Function Template Specialisation<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/V5kxeq\">Templates: Misconceptions and Surprises<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/8J6sY3\">Types, Non-Types, and Templates as Template Parameters<\/a><\/li>\n<\/ol>\n<\/li>\n<li>C-Style Programming\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-mixing-c-with-c\">Mixing C with C++<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Source\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2DqZ4zs\">Source Files<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2DBeilg\">The Remaining Rules about Source Files<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2ZZQO2J\">Modules<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/30iePCe\">More Details to Modules<\/a><\/li>\n<\/ol>\n<\/li>\n<li>The Standard Library\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2EjTj70\">The Standard Library<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2M8GcvL\">std::array and std::vector are your Friends<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2MqOEqr\">More special Friends with std::map and std::unordered_map<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2KFbU1h\">Avoid Bounds Errors<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/31BaStd\">Rules for Strings<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2RxTKjf\">IOStreams<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2FIVCkS\">In- and Output with Streams<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2LEuJ5f\">Improved Performance with Iostreams<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/32CtUQy\">The Regular Expression Library<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2O8W2Yg\">More Rules about the Regular Expression Library<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/30ZVm98\">When RAII breaks<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Supporting Sections\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2yDR6jp\">Architectural Ideas<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-non-rules-and-myths\">Non-Rules and Myths<\/a>\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2TGv9tU\">More Non-Rules and Myths<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/further-myths-from-my-readers\">Myths of My Blog Readers<\/a><\/li>\n<li><a href=\"https:\/\/heise.de\/-4511182\">More Myths of My Blog Readers<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"http:\/\/bit.ly\/2lGQeaz\">Profiles<\/a>\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2lWqwik\">Type Safety<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2mxst5k\">Type Safety by Design<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2nXRqaz\">Bounds Safety<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-core-guidelines-lifetime-safety\">Lifetime Safety and Checking the Rules<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"http:\/\/bit.ly\/2McUs4r\">Naming and Layout Rules<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Templates\"><\/span>Templates<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/template-get-insight\">First Steps<\/a><\/li>\n<li>Basics\n<ol>\n<li>Function Templates \n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/function-templates\">Function Templates<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/function-templates-more-details\">More Details: Explicit Template Arguments and Concepts<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Class Templates\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/class-templates\">Class Templates<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/surprise-included-inheritance-and-member-functions-of-class-templates\">Surprises Included: Inheritance and Member Functions of Class Templates<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/alias-templates-and-template-parameters\">Alias Templates and Template Parameters<\/a><\/li>\n<li>Template Arguments\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/template-arguments\">Template Arguments<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/template-argument-deduction-of-class-templates\">Template Argument Deduction of Class Templates<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Template Specialization\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/template-specialization\">Template Specialization<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/template-specialization-more-details\">More Details about Class Templates<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/full-specialization-of-function-templates\">Full Specialization of Function Templates<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>Details<a href=\"https:\/\/www.modernescpp.com\/index.php\/template-instantiation\"><\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/template-instantiation\">Template Instantiation<\/a><\/li>\n<li>Variadic Templates and Fold Expressions\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/variadic-templates-or-the-power-of-three-dots\">Variadic Templates or the Power of Three Dots<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/more-arbout-variadic-templates\">More about Variadic Templates &#8230;<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/from-variadic-templates-to-fold-expressions\">From Variadic Templates to Fold Expressions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/smart-tricks-with-fold-expressions\">Smart Tricks with Parameter Packs and Fold Expressions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/visiting-a-std-variant-with-the-overload-pattern\">Visiting a std::variant with the Overload Pattern<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/special-friendship-of-templates\">The Special Friendship of Templates<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/dependent-types\">Dependent Names<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Techniques\n<ol>\n<li>Automatic Return Type \n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/automatic-return-type\">Automatic Return Type (C++98)<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/automatic-return-type-c-11-14-20\">Automatic Return Type (C++11\/14\/20)<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Template Metaprogramming\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/template-metaprogramming-a-introduction\">How it All Started<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/template-metaprogramming-how-it-works\">How it Works<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/template-metaprogramming-hybrid-programming\">Hybrid Programming<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Type-Traits Library\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-type-traits-library-type-checks\">Type Checks<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-type-traits-library-type-comparisons\">Type Comparisons<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-type-traits-library-std-is-base-of\"><code>std::is_base_of<\/code><\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-type-traits-library\">Correctness<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/the-type-traits-library-performance\">Performance<\/a><\/li>\n<\/ol>\n<\/li>\n<li><code>constexpr<\/code>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/constexprfunctions\"><code>constexpr<\/code> Functions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/constexpr-and-consteval-functions-in-c-20\"><code>constexpr<\/code> and <code>consteval<\/code> Functions in C++20<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/constespr-if\"><code>constexpr if<\/code><\/a><\/li>\n<\/ol>\n<\/li>\n<li>Design\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/dynamic-and-static-polymorphism\">Dynamic versus Static Polymorphism<\/a><\/li>\n<li>CRTP\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/more-about-dynamic-and-static-polymorhism\">More about Dynamic versus Static Polymorphism<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/mixins\">Mixins<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/avoiding-temporaries-with-expression-templates\">Avoiding Temporaries with Expression Templates<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/policy-and-traits\">Policy<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/softwaredesign-with-traits-and-tag-dispatching\">Traits and Tag Dispatching<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/a-std-advance-implementation-with-c-98-c-17-and-c-20\">A <code>std::advance<\/code> Implementation based on C++98, C++11, and C++20<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/type-erasure\">Type Erasure<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Review\"><\/span><a href=\"http:\/\/bit.ly\/2TGv9tU\">Review<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2TGv9tU\">Clean C++<\/a><\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"News\"><\/span><a href=\"http:\/\/bit.ly\/2TGv9tU\">News<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2TGv9tU\">No New New<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2TGv9tU\">CppCon 2018<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2TGv9tU\">Meeting Embedded and Meeting C++ 2018 &nbsp; &nbsp;<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/PVSCompilerExplorer\">Compiler Explorer, PVS-Studio, and Terrible Simple Bugs<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/quo-vadids-modernes-c\">Quo Vadis &#8211; Modernes C++<\/a><\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Tools\"><\/span><a href=\"http:\/\/bit.ly\/2TGv9tU\">Tools<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><a href=\"http:\/\/bit.ly\/2TGv9tU\">C++ Insights<\/a>\n<ol>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-insights-conversions\">Implicit Conversions<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-insights-type-deduction\">Type Deduction<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-insights-template-instantiation\">Template Instantiation<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-insights-variadic-templates\">Variadic Templates<\/a><\/li>\n<li><a href=\"https:\/\/www.modernescpp.com\/index.php\/c-insights-lambdas\">Lambdas<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<div id=\"simple-translate\">\n<div>\n<div class=\"simple-translate-button isShow\" style=\"background-image: url('moz-extension:\/\/981aa874-2db4-44d3-a97f-b02a72476831\/icons\/512.png'); height: 22px; width: 22px; top: 284px; left: 170px;\">&nbsp;<\/div>\n<div class=\"simple-translate-panel\" style=\"width: 300px; height: 200px; top: 0px; left: 0px; font-size: 13px; background-color: #ffffff;\">\n<div class=\"simple-translate-result-wrapper\" style=\"overflow: hidden;\">\n<div class=\"simple-translate-move\" draggable=\"draggable\">&nbsp;<\/div>\n<div class=\"simple-translate-result-contents\">\n<p class=\"simple-translate-result\" dir=\"auto\" style=\"color: #000000;\">&nbsp;<\/p>\n<p class=\"simple-translate-candidate\" dir=\"auto\" style=\"color: #737373;\">&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This page is the starting point for my blog Modernes C++. A simple overview of my existing and upcoming posts.<\/p>\n","protected":false},"author":21,"featured_media":4777,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[362],"tags":[],"class_list":["post-4778","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ueberblick"],"_links":{"self":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/posts\/4778","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/comments?post=4778"}],"version-history":[{"count":0,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/posts\/4778\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/media\/4777"}],"wp:attachment":[{"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/media?parent=4778"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/categories?post=4778"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.modernescpp.com\/index.php\/wp-json\/wp\/v2\/tags?post=4778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}