For hazelnut ice-cream, preheat oven to 180C. Roast hazelnuts on a tray until golden (8-10 minutes). Transfer half to a saucepan with milk, bring just to a simmer over medium heat and stand until infused (1 hour). Peel remaining hazelnuts, finely chop and set aside. Whisk yolks and sugar in a heatproof bowl until pale. Strain hazelnut milk into a clean saucepan (discard hazelnuts), add cream, bring just to the boil and pour over yolk mixture, whisking to combine. Return mixture to pan and stir continuously over low heat until mixture coats the back of spoon thickly (8-10 minutes). Strain into a bowl placed over ice, stir occasionally until chilled. Freeze in an ice-cream machine according to manufacturer’s instructions. Stir through chopped hazelnuts (reserving 2 tbsp for serving). Makes about 750ml.
Meanwhile, for crème pâtissière, bring milk to the boil over medium heat in a saucepan. Whisk egg yolks, sugar and flour in a heatproof bowl, then add milk and stir to combine. Return to saucepan, stir continuously over high heat until thick (2-3 minutes). Stir through butter and set aside until cool (20-30 minutes).
For pain perdu, trim bread slices into 8cm squares. Spread crème pâtissière over half the slices and sandwich with remaining bread. Transfer to a shallow tray. Combine milk and eggs in a bowl, whisk until smooth, pour over bread and stand until liquid is absorbed, turning once (2-3 minutes).
Heat butter in a large non-stick frying pan over medium-high heat, add pain perdu and turn once until golden (1-2 minutes each side). Transfer to plates and keep warm.
Heat caster sugar in a separate large, non-stick frying pan over high heat until caramelised (1-2 minutes), add apple slices and turn occasionally until golden (3-5 minutes). Serve immediately with pain perdu, hazelnut ice-cream and reserved hazelnuts.
Note Pain au raisin is a French-style raisin
loaf. If it's unavailable, substitute another fruit loaf.