September 19th, 2012 — Functional Patterns in C++ — Bartosz Milewski

Time and Location

September 19, 2012 at 7:00 PM
Microsoft Campus.


We are familiar with at least some of the GoF patterns like Visitor or Factory. Less known are some very powerful abstract patterns used primarily in functional languages. I will show you how to implement them in C++, as long as you don’t get intimidated by names like Type Constructor, Functor, Applicative Functor, or Monad. Examples of those patterns are everywhere: std::unique_ptr, std::vector, std::function, and many more. What piqued my interest in those patterns was their use in C# to solve some of the problem of abstracting asynchronous APIs and threads. Their understanding might help in fixing C++11 support for concurrency.


Bartosz Milewski has a Ph.D. in Quantum Physics and many years of experience as a C++ programmer. He worked at Microsoft on the Context Index—a search engine before the Internet—still an active part of Windows. He designed the first distributed version control system, Code Co-op (before BitKeeper and Git). Bartosz took part in the design of the D language. His main topics of interest are concurrent and distributed computing. He works as a Software Architect at FP Complete, a company whose goal is to make Haskell an industrial language. He regularly publishes a blog at and at


Video and Slides