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
for an target function object that is const or, if the target function
object is held by value, the adapter is const).