Exercise 16.17
There is no particular difference in principle, except that when we want to inform the compiler of a name representation type, we must use the keyword typename instead of class.
Exercise 16.18
A) template <typename T, TypeName U, typename v> void F1 (T, U, V);
b) Template <typename t> T f2 (t&);
c) template <typename t> inline T foo (t, unsigned int *);
d) template <typename t> t F4 (t, T);
e) Legal
Exercise 16.19
1#include <iostream>2#include <string>3#include <utility>4#include <memory>5#include <vector>6#include <list>7 8 using namespacestd;9 TenTemplate <typename t>voidPrintConstt&t); One A intMain () - { -vector<string> v1{"AD","AD" }; the print (v1); -System"Pause"); - return 0; - } + -Template<typename t> + voidPrintConstT &t) A { at for(size_t i =0; I! = T.size (); ++i) -cout << T[i] <<Endl; -}
Exercise 19.20
1#include <iostream>2#include <string>3#include <utility>4#include <memory>5#include <vector>6#include <list>7 8 using namespacestd;9 TenTemplate <typename t>voidPrintConstt&t); One A intMain () - { -vector<string> v1{"AD","AD" }; the print (v1); -System"Pause"); - return 0; - } + -Template<typename t> + voidPrintConstT &t) A { at for(Auto P = t.begin (); P! = T.end (); + +p) -cout << *p <<Endl; -}
C++primer 16.1.3 sessions