16.32
在模版实参腿短过程中,编译器使用函数调用中的实参类型来寻找模版实参,用这些模版实参生成的函数版本与给定的函数调用最为匹配
16.33
1.const转换,可以将一个非const对象的引用传递给一个const引用形参
2.数组或函数指针转换,如果函数形参不是引用类型,则可以对数组或函数类型的实参应用正常的指针转换,一个数组实参可以转换为一个指向其首元素的指针,类似的,一个函数实参可以转换为一个改函数类型的指针
16.34
a 合法,const string&
b合法,const string&
应该题目出错了吧?传入了相同的题目?
16.35
a,合法, T为 char, 而'c'会转换成int传入
b.合法, T为double, f会舍弃小数部分转换成int
c 合法, T为char
d 不合法,T为float,当类型不相同,不能进行实例化
实测与猜想相同
16.36
a. f1(int*,int*)
b.f2(int*,int*)
c.f1(const int*,const int *)
d.f2(const int*,const int*)
f.非法
e.f2(int*,const int*)
实测与猜想相同
实测与猜想相同
16.37
当然可以,当显示指定了模版实参,传入的实参若不是指定模版实参,将进行隐式转换
16.38
显示指定的模版实参,将成为make_shared的返回类型的模版参数传入
16.39
compare<string>("11","22");