HList copy constructor: DoubleNode clone DoubleNode clone IntNode clone StringNode clone IntNode clone IntNode clone StringNode clone IntNode clone Entering foo(): StringNode destructor HNode destructor HNode destructor Exiting foo(): HList copy constructor: DoubleNode clone DoubleNode clone IntNode clone StringNode clone IntNode clone IntNode clone StringNode clone IntNode clone DoubleNode clone DoubleNode clone IntNode clone StringNode clone IntNode clone IntNode clone StringNode clone IntNode clone HList Destructor: HNode destructor HNode destructor HNode destructor StringNode destructor HNode destructor HNode destructor HNode destructor StringNode destructor HNode destructor HNode destructor HNode destructor HList Destructor: HNode destructor HNode destructor HNode destructor StringNode destructor HNode destructor HNode destructor HNode destructor StringNode destructor HNode destructor HNode destructor HNode destructor HList Destructor: HNode destructor HNode destructor HNode destructor StringNode destructor HNode destructor HNode destructor HNode destructor StringNode destructor HNode destructor HNode destructor HNode destructor HList Destructor: HNode destructor HNode destructor HNode destructor StringNode destructor HNode destructor HNode destructor HNode destructor StringNode destructor HNode destructor HNode destructor HNode destructor In main(), L1 = 2.78 3.14158 6 "Hello" 7 8 "World" 9 In foo(), L3 = 2.78 3.14158 6 "Hello" 17 8 "New York" 9 In main(), L1 = 2.78 3.14158 6 "Hello" 7 8 "World" 9 In main(), L2 = 2.78 3.14158 6 "Hello" 17 8 "New York" 9