The Pipes Library: How Plumbing Can Make Your Code More Expressive
summary
Pipes implements a push model for collections in C++ (library on GitHub) that contrasts with ranges’ pull semantics, so a transform runs once per emitted element and avoids the double-evaluation surprise seen with ranges’ transform+filter example; it supports rvalue inputs, zip without tuples, branching to multiple sinks and plugging a pipeline as an STL output iterator (no intermediate container), tested in unit tests (C++14-compatible, operator >>= for composition) and works, with known limits: no end-of-stream signal, no heterogeneous-value storage, and sinks must exist.
AI-written summary · about
chapters (12)
- 0:00Start
- 18:00INSIDE A PIPE
- 27:31BRANCHING OUT: FORK
- 28:40BRANCHING OUT: UNZIP
- 30:04INPUT: RANGES
- 31:01INPUT: STL ALGORITHMS
- 34:54INPUT: SEVERAL RANGES
- 41:31THE CROSSING OVER
- 50:19CUSTOM END PIPE
- 51:12INTEGRATION IN MAP
- 53:28LIMITATIONS
- 58:33CONTRIBUTIONS
related talks
01h 27mPowerful Data Processing Pipelines with C++20 Coroutines
01h 15mHow to Rangify Your Code
01h 25mNew Algorithms in C++23
01h 10mSafe and Readable Code - Monadic Operations in C++23
01h 08mParallel Design Patterns and Stream Parallelism
01h 18mSafe and Readable C++ Code: Monadic Operations in C++23
05mPostmodern Meta C++
01h 02mC++20 - My Favourite Code Examples
