Preheat the oven to 200C. Grease an 18cm round cake pan and line the base and side with baking paper - the paper should protrude about 2.5cm above the pan.
Place walnuts on a baking tray and cook for 4-5 minutes until lightly roasted. Cool and cut into thirds.
Sift flour, baking powder, baking soda, spices and salt into a bowl. Repeat to ensure they are evenly mixed.
Put the egg whites in a very clean bowl of an electric mixer fitted with a whisk attachment. Beat on high speed until soft peaks start to form. Slowly pour in the sugar for the egg whites, while the motor is still running, being careful not to overmix - the meringue should reach soft peak stage. Quickly transfer the meringue to another bowl and set side until needed.
Put the egg and egg yolk in the bowl of the electric mixer and add the sugar for the egg yolks. Mix on high speed for 3-4 minutes, until the mixture doubles in volume and is quite airy. With the motor still running, slowly pour in the oil in a thin stream being careful that it doesn't split or deflate too much.
Remove the bowl from the mixer and with a spatula, gently fold in the flour mixture until combined. Fold in the carrots and walnuts. Quickly and lightly fold in the meringue - do not fold it through completely, you should still be able to see streaks of meringue through the mix.
Pour into the prepared pan and bake for 1 hour 10 minutes, or until a skewer inserted into centre of the cake comes out clean. You may need to drop the oven temperature to 180C after the first 30 minutes if the top is browning too quickly.
Meanwhile, for the cream cheese frosting, cream the icing sugar and butter in the bowl of an electric mixer until pale and smooth. Add the cream cheese in small amounts, allowing it to be completely incorporated before adding the rest. Scrape down the sides of the bowl during this process to ensure even mixing. Add the cream and mix until smooth, being careful not to overmix at this stage or the cream may curdle and separate. If using a different type of cream cheese for this recipe you may need to add a little more cream - the frosting needs to be of a spreadable consistency but not at all runny.
Remove the cake from the oven and allow to cool in the pan for 30 minutes before turning it out onto a wire rack to cool completely. Using a serrate knife, slice horizontally through the centre of the cake to form 2 even-sized layers and fill with cream cheese frosting. Dust the top of the cake with icing sugar to serve.