This mystery thriller is outrageous and irresistible, an old-fashioned drama with dashes of Patricia Highsmith, Patrick Hamilton, John le Carré and maybe Elizabeth Jane Howard’s memoir Slipstream. It features delicious performances by Helen Mirren and Ian McKellen – I don’t think McKellen has had such a juicy role since his turn in the 1998 drama Apt Pupil – and the film has such storytelling gusto that you’ll overlook bits of implausible silliness involving smartphone-type “handsets” with which large financial sums can supposedly be transferred from one bank account to another.

The director is Bill Condon, and it’s adapted by screenwriter Jeffrey Hatcher from the bestselling 2016 novel by first-time author Nicholas Searle who caused a flurry of his own by announcing that he was “not allowed to say more about his career than that he was a senior civil servant for many years”.

Mirren plays a retired, well-off widow called Betty McLeish looking for decorous romantic companionship from a silver-years dating website. She finds herself set up for lunch with roguish old charmer Roy Courtnay (McKellen) who enchants her with his twinkly-eyed naughtiness, and, even though Betty can see he’s a little bit improper, she’s no prig and likes a laugh.

It isn’t long before Roy has actually moved in as a platonic house guest to the astonished disapproval of Betty’s grandson Steven (Russell Tovey) a postgraduate student who occasionally stays overnight at Betty’s house. Steven is right to worry – because Roy is a dead-eyed predatory conman, working with phoney accountant Vincent (a nice performance from Jim Carter) to bilk greedy businessmen out of their cash and trick widows out of their savings. But maybe this scheme to hoodwink Betty will not go as smoothly as smug Roy thinks.

This movie rattles along with terrific energy and dash and the flashback sequences show that it’s actually far more daring and ambitious that you might expect. It’s a great duel between McKellen and Mirren.

• The Good Liar is released in the UK on 8 November, in the US on 15 November and in Australia on 5 December.