The New Library On The Block

A strong library foundation for your next project

We at think-cell have given many conceptual talks about iterators, ranges, string formatting, and generic programming in the past. Now, we would like to present the library that is the foundation of our code base and that lets us write code the way we like it: Short, elegant, and to the point.

Did you know that std::move can be called on a const reference? And that you cannot move out of that const reference but will silently copy? Wouldn’t it be nice to get a compiler error in that case?

Our range implementation is more powerful and easier to use than std::ranges. We treat generator functions as ranges, too. With the same syntax as iterator-based ranges, you often do not need to know the difference.

We extend the standard range algorithms (and our own additional algorithms) with return type arguments that express common programming patterns elegantly: How often did you call std::ranges::find_if and compare the result to an end iterator? Wouldn’t it be shorter and more elegant to write something like tc::find_if<tc::return_bool>?

The talk will focus on actual usage, rather than conceptual ideas. The library is open-source, header-only and thus easy to integrate into any project. For any new project, it will be a significant head start over the standard library. We strive for our library to be close to the standard library in names and conventions, so it is compatible with std ranges and algorithms and you can mix and match it with other libraries.

See Also