1
我想创建一个模板函数,该函数既具有可从传递给该函数的参数中推导出的类型模板参数,也具有非类型模板参数将被明确地放置。似乎编译器可以推导出每种类型,但是如果我指定了非类型模板参数,它需要所有模板参数。我可以只指定非类型的模板参数,还是全部或全部处理?具有非类型参数的调用模板函数explicit和类型参数隐式
#include <iostream>
#include <typeinfo>
template <typename T, bool bPrint=true>
void f(T var) {
if (bPrint)
std::cout << typeid(var).name() << std::endl;
}
int main() {
f(3); //works
f<false>(3); //error: template argument deduction/substitution failed
}
模板参数必须传递给在完全相同的顺序模板中声明,而实例... –