Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
编译器如何将值 3 传递给非类型参数x?
x
#include <iostream> template <typename Type, size_t x> void f(Type (&a)[x]) { for (int i = 0; i < x; i++) { a[i] = i; std::cout << a[i] << '\n'; } } int main() { int v[3]; f(v); }
模板允许类型名和整数类型,例如size_t.
size_t
对于整数类型,模板函数使用值(必须在编译时知道)进行初始化,而不是类型。
编译器知道该函数f()需要一个类型的参数,Type (&a)[x]并检查是否有 和 的任何组合Type适用x于v您传递的参数。
f()
Type (&a)[x]
Type
v
这个过程称为模板类型推导。