It is a tempting idea, but do not work. Consider : void delegate() immutable a; const void delegate() b = a; This would be forbidden as covariance of function parameters and transitivity act in opposite directions.