作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个模板函数,它既有类型模板参数,可以从传递给函数的参数中推导出来,也有非类型模板参数,它们将被显式放置。编译器似乎可以推断出每种类型是什么,但如果我指定非类型模板参数,它需要所有模板参数。我可以只指定非类型模板参数,还是全有或全无?
#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
}
最佳答案
可以,但是推导的模板参数需要位于参数列表的末尾。您可以通过重新排序函数模板的参数来编译代码:
template < bool bPrint=true, typename T>
void f(T var) {
if (bPrint)
std::cout << typeid(var).name() << std::endl;
}
关于c++ - 使用显式非类型参数和隐式类型参数调用模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40874065/
我是一名优秀的程序员,十分优秀!