The nullary overload of the call operator can be removed by setting the
second template parameter to false,
which is very useful if the result type computation would result in a compile
error, otherwise (nullary call operator's prototypes can't be templates
and thus are instantiated as early as the class template).

The type of the target function is allowed to be const qualified or a reference.
Const qualification is preserved and propagated appropriately. In other
words, only const versions of operator() can be used
if the target function object is const - or, in case the target function
object is held by value, the adapter is const.