说我们有以下内容:
template <class T, int i>
我理解T
将是传递给某个函数的任何类型。但是,int i
部分是什么意思?
感谢。
答案 0 :(得分:2)
此类模板类语法最常见的用例之一是提供一些固定大小的T
来处理:
template<typename T, size_t N>
class MyClass {
std::array<T,N> theHandledInstancesOfT;
};
MyClass<int,42> my42IntegersManagedByMyClass;
例如,另请参阅std::array<>
documentation。
答案 1 :(得分:0)
让我们比较两个函数,一个是模板而另一个没有:
int add_two(int x, int y) {
return (x + y);
}
// add_two(3, 4) == 7
template <int x, int y>
int add_two_2() {
return (x + y);
}
// add_two_2<3, 4>() == 7
在模板化版本中,x
和y
的值在编译时已知。这意味着编译器可以看到x = 3
和y = 4
表示结果为7
,并且只用7
替换整个函数调用。但是,在第一个函数中,这样的事情是不可能的,因为编译器在实际运行程序之前不知道x
和y
的值。