How to return “nothing” from a computation? How to model the presence or absence of a value? And how to compose these computations in a type safe manner?
How can we detect the return and argument type(s) of a function/callable at compile time? Given any type, is it a function or callable at all? With C++17, this task has become simpler.