很多语法书将could not have done归纳为推测用法,表示“过去不可能做了某事”,而并不是虚拟语气;相关的某些例句我能找到,不过对于下面这道题:
But for their help, we ________ the program in time. (2009安徽高考) (答案: D)
A. can not finish
B. will not finish
C. had not finished
D. could not have finished
这里的could not have finished到底是不是虚拟语气的用法?毕竟but for是含蓄条件句的标志性词。
或者说:could not have finished既可以用作虚拟语气,也可以用作非虚拟语气(表推测)?
求高手指点一二。