Pipes: How Plumbing Can Make Your C++ Code More Expressive
summary
A small C++ library called pipes implements a push model alternative to ranges, with a working GitHub repo and unit tests shown live. It delivers an efficient transform+filter (no double-calls), lets code zip without tuples, accepts rvalue inputs, and receives results directly from STL algorithms via output-iterator compatibility. It supports branching/forking and destination-aware endings like a map-aggregator. Limitations: no easy reverse/split or lookahead, no input caching, and outputs usually must exist before piping.
AI-written summary · about
chapters (12)
- 0:00Introduction to pipes
- 1:55Ranges vs push model
- 8:44Pipes library overview
- 14:25Implementing transform pipe
- 21:51Branching pipelines
- 26:12Ranges and pipes integration
- 31:15Multiple input collections
- 34:13Biological data example
- 40:13Ending pipes and containers
- 45:31Limitations of pipes
- 50:29Community and contributions
- 52:16Q&A session
related talks
01h 05mPipeline architectures in C++
57mPipeline-oriented programming
49mApplied Modern C++: beyond type erasure and visitor pattern
01h 04mEffective Ranges: A Tutorial for Using C++2x Ranges
01h 02mUsing Modern C++ to Revive an Old Design
01h 00mMissing (and future?) C++ range concepts
01h 05mThe Imperatives Must Go!
01h 06mConquering C++20 Ranges
