cpp template ch22