Allow null values.
Requires virtual inheritence from functions::function due to an inheritence diamond.