C++ Links: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Claas (Diskussion | Beiträge) (Composing Lambdas) |
Claas (Diskussion | Beiträge) (→Coroutines: std::generator: Standard Library Coroutine Support) |
||
(72 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Exceptions == | == Concurrency == | ||
* [https://www.justsoftwaresolutions.co.uk/threading/wrapping-callbacks-with-futures.html Using a wrapper for turning a callback into a future] | |||
== Exceptions and Transactional Operations == | |||
* [http://arne-mertz.de/2016/01/modern-c-features-keyword-noexcept/ How to use noexcept] | * [http://arne-mertz.de/2016/01/modern-c-features-keyword-noexcept/ How to use noexcept] | ||
* [http://www.acodersjourney.com/2016/08/top-15-c-exception-handling-mistakes-avoid/ Top 15 C++ Exception handling mistakes] | |||
* [https://tessil.github.io//2016/11/01/transactional-operations-scope-guard-list.html Scope guards for safe roll-backs] | |||
== Tuples == | == Containers == | ||
=== Tuples === | |||
* [http://vitiy.info/named-tuple-for-cplusplus/ Named Tuple] | * [http://vitiy.info/named-tuple-for-cplusplus/ Named Tuple] | ||
* [https://medium.com/@matt.aubury/rip-index-sequence-2014-2017-9cc854aaad0 Use apply on tuple as map-reduce (RIP index_sequence)] | |||
* [https://www.fluentcpp.com/2019/03/08/stl-algorithms-on-tuples/ STL Algorithms on Tuples] | |||
=== Variants === | |||
* [https://akrzemi1.wordpress.com/2016/02/27/another-polymorphism/ Polymorphism using variant] | |||
* [https://vittorioromeo.info/index/blog/variants_lambdas_part_1.html Visiting variants using lambdas] | |||
* [https://adishavit.github.io/2016/polymorphism-polymorphism/ Polymorphism-polymorphism] | |||
* [https://schneide.wordpress.com/2018/01/11/c17-the-two-line-visitor-explained/ The two line visitor explained] | |||
* [https://arne-mertz.de/2018/06/functions-of-variants-are-covariant/ Functions of Variants are Covariant] | |||
=== 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]) | |||
=== Misc === | |||
* [https://godbolt.org/z/faaxszrrY C++20: namedtuple/struct similar to Python] | |||
== Regular Expressions == | |||
* The Regular Expression Library [http://www.modernescpp.com/index.php/regular-expressions Part 1], [http://www.modernescpp.com/index.php/more-rules-to-the-regular-expression-library 2] | |||
== Iterators == | |||
* [https://blog.galowicz.de/2016/09/04/algorithms_in_iterators/ Wrapping Algorithms into Iterators] | |||
* [http://reedbeta.com/blog/python-like-enumerate-in-cpp17/ Python-Like enumerate() In C++17] | |||
* [https://foonathan.net/2020/03/iterator-sentinel/ C++20’s Iterator Sentinels] | |||
== Functional Programming == | |||
* [http://www.fluentcpp.com/2017/07/11/dealing-multiple-paths-vector-monad-c/ Vector Monad] | |||
* [https://philippegroarke.com/blog/2018/05/19/declarative-functional-apis-a-k-a-abusing-lambda-parameters/ Declarative Functional APIs] | |||
* [https://foonathan.net/2020/05/fold-tricks/ Nifty Fold Expression Tricks] | |||
== Coroutines == | |||
* [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] | |||
* [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://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 == | |||
* [https://foonathan.github.io/blog/2016/10/19/strong-typedefs.html Strong typedefs] | |||
* [https://www.justsoftwaresolutions.co.uk/cplusplus/strong_typedef.html strong_typedef by Anthony Williams] | |||
* [https://abseil.io/tips/49 ADL] | |||
* [https://accu.org/index.php/journals/2641 lvalues, rvalues, glvalues, prvalues, xvalues, help] | |||
* [https://simpleroseinc.github.io/2020/02/29/create-a-new-type.html Create a new type when using std::variant] | |||
== Concepts == | |||
* [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 13: | Zeile 67: | ||
* [http://blog.therocode.net/2016/01/copyable-polymorphic-wrapper Deep copy using a polymorphic wrapper] | * [http://blog.therocode.net/2016/01/copyable-polymorphic-wrapper Deep copy using a polymorphic wrapper] | ||
* [https://akrzemi1.wordpress.com/2016/01/16/a-customizable-framework/ A customizable framework] | * [https://akrzemi1.wordpress.com/2016/01/16/a-customizable-framework/ A customizable framework] | ||
* [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]) | |||
* [https://thecodepad.com/cpp/turning-c-metaprogramming-inside-out-with-boost-hana/ Turning C++ metaprogramming inside-out with boost::hana] | |||
== CRTP == | |||
* [https://www.fluentcpp.com/2017/12/12/mixin-classes-yang-crtp/ Mixin Classes] | |||
== Covariance, Contravariance, Invariance == | |||
* [http://cpptruths.blogspot.nl/2015/11/covariance-and-contravariance-in-c.html Covariance and Contravariance] | |||
* [http://arne-mertz.de/2016/05/covariant-smart-pointers/ Covariant smart pointers] | |||
* [https://arne-mertz.de/2018/06/functions-of-variants-are-covariant/ Functions of Variants are Covariant] | |||
== Lambdas == | == Lambdas == | ||
[http://learnmeahaskell.blogspot.de/2014/05/composing-lambdas-in-c14-and-functions.html Composing Lambdas in C++14 -- and Functions] | * [http://learnmeahaskell.blogspot.de/2014/05/composing-lambdas-in-c14-and-functions.html Composing Lambdas in C++14 -- and Functions] | ||
* [https://vittorioromeo.info/index/blog/capturing_perfectly_forwarded_objects_in_lambdas.html Capturing perfectly-forwarded objects in lambdas] | |||
* [http://cpptruths.blogspot.de/2014/03/fun-with-lambdas-c14-style-part-1.html Fun with lambdas (part 1)] | |||
* Lambda story [https://www.bfilipek.com/2019/02/lambdas-story-part1.html?m=1 part 1] | |||
== 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://www.fluentcpp.com/2018/12/14/named-arguments-cpp/ C++ Named Arguments] | |||
* [http://www.bfilipek.com/2018/01/pimpl.html The Pimpl Pattern - what you should know] | |||
* [https://www.fluentcpp.com/2016/12/15/respect-levels-of-abstraction/ It all comes down to respecting levels of abstraction] | |||
* [https://eli.thegreenplace.net/2016/the-expression-problem-and-its-solutions/ The expression problem] | |||
* [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] | |||
* [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 == | |||
* [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 == | |||
* [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://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