This lesson talks about the form and use of unreal conditionals in the past. It is generally refer to 3rd conditional. Except "would have", we can also use "could have", "might have", ...etc. in result clause. This lesson talks more on them.
Unreal Conditionals in the past 2