C++ Links: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Claas (Diskussion | Beiträge) (→Types: Create a new type when using std::variant) |
Claas (Diskussion | Beiträge) (→Coroutines: std::generator: Standard Library Coroutine Support) |
||
(16 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 22: | Zeile 22: | ||
=== Boost Multiindex === | === Boost Multiindex === | ||
* Why use multiindex ([https://david-grs.github.io/why_boost_multi_index_container-part1/ Part 1], [https://david-grs.github.io/why_boost_multi_index_container-part2/ Part 2]) | * Why use multiindex ([https://david-grs.github.io/why_boost_multi_index_container-part1/ Part 1], [https://david-grs.github.io/why_boost_multi_index_container-part2/ Part 2]) | ||
=== Misc === | |||
* [https://godbolt.org/z/faaxszrrY C++20: namedtuple/struct similar to Python] | |||
== Regular Expressions == | == Regular Expressions == | ||
Zeile 39: | Zeile 42: | ||
* [https://hackernoon.com/c-coroutine-ts-its-about-inversion-of-control-d1588c4c4c31 It’s about inversion of control!], [https://medium.com/@jasonmeisel/ranges-code-quality-and-the-future-of-c-99adc6199608 Pythagorean triples (ranges)] | * [https://hackernoon.com/c-coroutine-ts-its-about-inversion-of-control-d1588c4c4c31 It’s about inversion of control!], [https://medium.com/@jasonmeisel/ranges-code-quality-and-the-future-of-c-99adc6199608 Pythagorean triples (ranges)] | ||
* Coroutines [https://lewissbaker.github.io/2017/09/25/coroutine-theory 1], [https://lewissbaker.github.io/2017/11/17/understanding-operator-co-await 2], [https://lewissbaker.github.io/2018/09/05/understanding-the-promise-type 3] | * Coroutines [https://lewissbaker.github.io/2017/09/25/coroutine-theory 1], [https://lewissbaker.github.io/2017/11/17/understanding-operator-co-await 2], [https://lewissbaker.github.io/2018/09/05/understanding-the-promise-type 3] | ||
* [http://www.vishalchovatiya.com/cpp20-coroutine-under-the-hood/ C++20 Coroutine: Under The Hood] | |||
* [https://turingcompl33t.github.io/Coroutine-Map/ Accelerating Map Multi-Lookup with Coroutines] | * [https://turingcompl33t.github.io/Coroutine-Map/ Accelerating Map Multi-Lookup with Coroutines] | ||
* [https://ericniebler.com/2020/11/08/structured-concurrency/ Structured Concurrency] | * [https://ericniebler.com/2020/11/08/structured-concurrency/ Structured Concurrency] | ||
* [https://accu.org/journals/overload/30/168/fertig/ C++20: A Coroutine Based Stream Parser] | |||
* [https://devblogs.microsoft.com/cppblog/std-generator-standard-library-coroutine-support/ std::generator: Standard Library Coroutine Support] | |||
== Types == | == Types == | ||
Zeile 51: | Zeile 57: | ||
== Concepts == | == Concepts == | ||
* [https://akrzemi1.wordpress.com/2020/03/26/requires-clause/ requires-clause] | * [https://akrzemi1.wordpress.com/2020/03/26/requires-clause/ requires-clause] | ||
* [https://andreasfertig.blog/2024/01/cpp20-concepts-applied/ Concepts applied - Safe bitmasks using scoped enums] | |||
== Random == | == Random == | ||
Zeile 62: | Zeile 69: | ||
* [https://vittorioromeo.info/index/blog/cpp17_curry.html Zero overhead currying] | * [https://vittorioromeo.info/index/blog/cpp17_curry.html Zero overhead currying] | ||
* Fundamental operations on type lists ([https://www.szilardszaloki.com/template%20metaprogramming/2020/02/29/fundamental-operations-on-type-lists-part1.html 1], [https://www.szilardszaloki.com/template%20metaprogramming/2020/03/27/fundamental-operations-on-type-lists-part2.html 2]) | * Fundamental operations on type lists ([https://www.szilardszaloki.com/template%20metaprogramming/2020/02/29/fundamental-operations-on-type-lists-part1.html 1], [https://www.szilardszaloki.com/template%20metaprogramming/2020/03/27/fundamental-operations-on-type-lists-part2.html 2]) | ||
* [https://thecodepad.com/cpp/turning-c-metaprogramming-inside-out-with-boost-hana/ Turning C++ metaprogramming inside-out with boost::hana] | |||
== CRTP == | == CRTP == | ||
Zeile 78: | Zeile 86: | ||
== Methods / Patterns == | == Methods / Patterns == | ||
* [https://www.justsoftwaresolutions.co.uk/cplusplus/hidden-friends.html The power of hidden friends] | |||
* [https://foonathan.net/special-member C++ Special Member Function Guidelines] | * [https://foonathan.net/special-member C++ Special Member Function Guidelines] | ||
* [https://www.fluentcpp.com/2018/12/14/named-arguments-cpp/ C++ Named Arguments] | * [https://www.fluentcpp.com/2018/12/14/named-arguments-cpp/ C++ Named Arguments] | ||
Zeile 85: | Zeile 94: | ||
* [https://www.fluentcpp.com/2019/09/24/expressive-code-for-state-machines-in-cpp/ typestates for expressive code] | * [https://www.fluentcpp.com/2019/09/24/expressive-code-for-state-machines-in-cpp/ typestates for expressive code] | ||
* [https://www.fluentcpp.com/2020/01/03/dry-comparisons-a-c-library-to-shorten-redundant-if-statements/ Simultaneous comparisons via private inheritance from tuple] | * [https://www.fluentcpp.com/2020/01/03/dry-comparisons-a-c-library-to-shorten-redundant-if-statements/ Simultaneous comparisons via private inheritance from tuple] | ||
* [http://codingadventures.org/2021/11/27/solid-principles-using-modern-c/ SOLID Principles in modern C++] | |||
* [https://marcoarena.wordpress.com/2023/01/31/the-toggle-builder/ The toggle builder] | |||
* [https://abstractexpr.com/2023/04/25/better-than-singletons-the-service-locator-pattern/ Better than singletons: The service locator pattern] | |||
* [https://quuxplusone.github.io/blog/2023/04/08/most-ctors-should-be-explicit/ Most constructors should be explicit] | |||
* [https://www.foonathan.net/2023/07/constrain-user-defined-conversions/ Constrain your user-defined conversions] | |||
== Pointers and References == | == Pointers and References == | ||
* [https://www.nextptr.com/tutorial/ta1441164581/stdref-and-stdreference_wrapper-common-use-cases std::ref and std::reference_wrapper: common use cases] | * [https://www.nextptr.com/tutorial/ta1441164581/stdref-and-stdreference_wrapper-common-use-cases std::ref and std::reference_wrapper: common use cases] | ||
* [https://medium.com/factset/modern-c-in-depth-move-semantics-part-2-4c53e90d5f2 Move Semantics Part 2] | |||
* [https://devblogs.microsoft.com/cppblog/cpp23-deducing-this/ C++23’s Deducing this: what it is, why it is, how to use it] | |||
* [https://accu.org/journals/overload/30/171/fertig/ The Power of Ref-qualifiers] | |||
== Optimization, constexpr == | |||
== Optimization == | |||
* [https://blog.headlandstech.com/2018/08/15/outofline-a-memory-locality-pattern-for-high-performance-c/ OutOfLine: Reduce cache misses by reducing size of class] | * [https://blog.headlandstech.com/2018/08/15/outofline-a-memory-locality-pattern-for-high-performance-c/ OutOfLine: Reduce cache misses by reducing size of class] | ||
* [https://kristerw.blogspot.co.uk/2016/12/gcc-attributepure-and-c-exceptions.html GCC attribute pure] | * [https://kristerw.blogspot.co.uk/2016/12/gcc-attributepure-and-c-exceptions.html GCC attribute pure] | ||
* [https://gieseanw.wordpress.com/2019/10/20/we-dont-need-no-stinking-expression-templates/ We don’t need no stinking expression templates] | * [https://gieseanw.wordpress.com/2019/10/20/we-dont-need-no-stinking-expression-templates/ We don’t need no stinking expression templates] | ||
* [https://www.cppstories.com/2021/constexpr-vecstr-cpp20/ constexpr vector and string in C++20 and One Big Limitation] | |||
* [https://www.foonathan.net/2022/01/compile-time-codegen/ Compile Time Code Generation and Optimization] | |||
== Network == | == Network == | ||
* [https://medium.com/hacker-daily/writing-high-performance-servers-in-modern-c-7cd00926828 Writing modern C++ servers using Wangle] | * [https://medium.com/hacker-daily/writing-high-performance-servers-in-modern-c-7cd00926828 Writing modern C++ servers using Wangle] |
Aktuelle Version vom 13. April 2025, 20:43 Uhr
Concurrency
Exceptions and Transactional Operations
Containers
Tuples
Variants
- Polymorphism using variant
- Visiting variants using lambdas
- Polymorphism-polymorphism
- The two line visitor explained
- Functions of Variants are Covariant
Boost Multiindex
Misc
Regular Expressions
Iterators
Functional Programming
Coroutines
- It’s about inversion of control!, Pythagorean triples (ranges)
- Coroutines 1, 2, 3
- C++20 Coroutine: Under The Hood
- Accelerating Map Multi-Lookup with Coroutines
- Structured Concurrency
- C++20: A Coroutine Based Stream Parser
- std::generator: Standard Library Coroutine Support
Types
- Strong typedefs
- strong_typedef by Anthony Williams
- ADL
- lvalues, rvalues, glvalues, prvalues, xvalues, help
- Create a new type when using std::variant
Concepts
Random
Metaprogramming
- Size of an array (another way)
- static_if
- Deep copy using a polymorphic wrapper
- A customizable framework
- Zero overhead currying
- Fundamental operations on type lists (1, 2)
- Turning C++ metaprogramming inside-out with boost::hana
CRTP
Covariance, Contravariance, Invariance
Lambdas
- Composing Lambdas in C++14 -- and Functions
- Capturing perfectly-forwarded objects in lambdas
- Fun with lambdas (part 1)
- Lambda story part 1
Methods / Patterns
- The power of hidden friends
- C++ Special Member Function Guidelines
- C++ Named Arguments
- The Pimpl Pattern - what you should know
- It all comes down to respecting levels of abstraction
- The expression problem
- typestates for expressive code
- Simultaneous comparisons via private inheritance from tuple
- SOLID Principles in modern C++
- The toggle builder
- Better than singletons: The service locator pattern
- Most constructors should be explicit
- Constrain your user-defined conversions
Pointers and References
- std::ref and std::reference_wrapper: common use cases
- Move Semantics Part 2
- C++23’s Deducing this: what it is, why it is, how to use it
- The Power of Ref-qualifiers
Optimization, constexpr
- OutOfLine: Reduce cache misses by reducing size of class
- GCC attribute pure
- We don’t need no stinking expression templates
- constexpr vector and string in C++20 and One Big Limitation
- Compile Time Code Generation and Optimization