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.
如果您使用类型参数定义模板
template <class T> void f(const T& arg){...};
那么T即使没有明确提供参数,编译器也可以推导出参数。有没有办法用下面的模板达到同样的效果?
T
template <int n> void g(){...};
我的意思是,当参数是值(int、bool 等)而不是类型时,是否有模板参数推导规则?
是的,它们与类型完全相同。但是,请注意,所有模板参数推导都取决于参数的已知静态类型(即不是运行时整数变量)(转换运算符除外,其中返回类型很重要)。
所以你可以这样做:
template <int n> void g(int (&array)[n]){...};
并从数组的大小推断n。
n