Question #219
#include <iostream>
template<typename T>
T sum(T arg) {
return arg;
}
template<typename T, typename ...Args>
T sum(T arg, Args... args) {
return arg + sum<T>(args...);
}
int main() {
auto n1 = sum(0.5, 1, 0.5, 1);
auto n2 = sum(1, 0.5, 1, 0.5);
std::cout << n1 << n2;
}
32
这个很简单,n1,n2值即sum函数的返回值,这里有两个sum函数,最开始初始化时n1的第一个数据是double类型,所以实例化后就是 sum(double arg,...) ,返回值等于 0.5+sum
Question #207
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> m;
cout << m[42];
}
0
没什么好说的,秒了,map[42]不存在,对于这样的操作会 try_emplace 初始化为0。
Question #185
#include <iostream>
template <typename T> void f() {
static int stat = 0;
std::cout << stat++;
}
int main() {
f<int>();
f<int>();
f<const int>();
}
010
模板对 f() 实例化时对类型为 int 和 const int 会实例化成不同的函数,所以他们有各自的 int stat,所以f
评论 (0)