From Bartosz Milewski’s What Does Haskell Have to Do with C++?: Haskell style list comprehensions of the form
one x = 1
count lst = sum [one x | x <- lst]
can be written in modern C++ like so:
template<class T> struct
one {
static const int value = 1;
};
template<class... lst> struct
count {
static const int value = sum<one<lst>::value...>::value;
};
The author calls out the comparison between one<lst>::value...
and [one x | x <- lst]
. I’ve used packs like this before, but looking at this juxtaposition was a revelation.