全く同じ質問に回答しましたが、
同じ質問が出ているということは、たぶん理解されてないと思うので、すこし説明を変えます。
もし読んでわかんなかったら
余計なこと考えないで書いてあるのそのまま頭入れとけば良いと思います。
まず質問に答えると
そこに載ってる表現以外にも、「推量」も「後悔」もいろんな助動詞を使って言えます。だから
can have doneも文法的になくはないし
would have doneも文法的になくはない
ただし、以下の説明をみてください。
基本的には
「推量」の意味になる助動詞のうち、
一部の助動詞は「後悔」の意味にもなる
というのが正しい説明だと思います。
だから分類すると
①「推量」の意味になるけど「後悔」の意味にはならない
②「推量」「後悔」どちらの意味にもなる
③「推量」の意味にならないけど、「後悔」の意味になる
という3種類の助動詞があると思ってください。
数的には①>②>③ の順番で多いです。
③は例外中の例外です。
「後悔」の方の用法は、要は仮定法のことなのです。
仮定法の表現が、使い方とか文脈によっては後悔の意味になるのです。
「〜だった(のに)」というのは
頭の中ではこうなはずなのに、現実はそうでない
という意味合いだから、仮定法のニュアンスそのままです。
「推量」の用法は、仮定法ではなくて、ただ過去のことを「〜だっただろう」とか「〜だったはず」と言ってるだけです。
仮定法なのか否か が
文法として違いが大きいので、
「後悔」と「推量」は分けて考えないとダメなんです。
仮定法は助動詞の過去形を使いますから
現在形を使ってる時点で、「後悔」の意味にはならないんです。
だから
can have doneは推量の意味にしかならない。後悔の意味にはなりません。さっきの分類でいうと①
could have doneは推量と後悔どちらの意味にもなります。②のやつです。
would have doneはwouldが過去形だから推量と後悔どちらの意味にもなります。②のやつです。
ポイント024にまとめられているのは
現在形しかない特殊な助動詞で、かつ「後悔」の意味になるものだけです。
このうち
should have doneとought to have doneは
推量 「〜したはずだ」
後悔 「〜するべきだった(のに)」
の両方の意味になるんです。だからさっきの分類だと②
needn't have doneは、
推量の意味にはならないけど
後悔 「〜する必要はなかった(のに)」
の意味になる。③の例外中の例外です。
③に分類されるのはneedn't have doneくらいなもんです。
分かりやすすぎて驚きました!笑ありがとうございます!
ちなみにmustも現在形しかない助動詞で
must have doneは
推量 「〜したに違いない」の意味にしかなりません
後悔の用法はない。分類だと①です。