PHP null許容型についてfunction yourName(?string $name) {} など nullable 型宣言をした場合での挙動が分からなかった件

関数の引数にnullを許容する場合2通りあって

PHP7.0から

function yourName(string $name = null) {
	if (!name) {
		print '名無しです';
	} else {
		print $name . 'です'; 
	}
}

PHP7.1から

function yourName(?string $name) {
	if (!name) {
		print '名無しです';
	} else {
		print $name . 'です'; 
	}
}

となる。

しかし
PHP7.1の方で

yourName();

と実行すると
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function yourName()
とエラーになる。
デフォルト値がない場合でもokなんじゃないの?違うの?としばらく分からなかったのですが
引数のnullを許容するとういことなのかと

yourName(null);

とすればきちんと通ります。

つまり
yourName();
をPHP7.1で実行するにはデフォルト値を設定しなければいけないみたいです。そんなのあたりまでだろと思われるかもしれませんが僕は理解していませんでした。。。

function yourName(?string $name = null) {
	if (!name) {
		print '名無しです';
	} else {
		print $name . 'です'; 
	}
}

ん〜難しい。

間違っていたらコメントで指摘してもらえると助かりますm(_ _)m