带有非类型参数的调用模板函数明确和类型参数隐式
Call template function with non-type parameters explicit and type parameters implicit
我想创建一个具有两个类型模板参数的模板函数,可以从传递给该函数的参数和非类型模板参数中推导,这些参数将被明确放置。似乎编译器可以推断每种类型的内容,但是如果我指定了想要所有模板参数的非类型模板参数。我可以仅指定非类型模板参数,还是全部或全无?
#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;
}
demo
相关文章:
- 在 c++ 中的模板实例化中使用带有构造函数的类作为类型参数
- 如何在 c++ 中定义接受不同参数类型的函数向量?
- 函数类型参数的模板参数推导
- 基于类型作为参数的字符串表示形式具有不同返回类型的函数
- PowerShell 使用结构类型参数调用 C++ DLL 的导出函数
- 通过引用传递参数;函数返回类型是否必须为 VOID?
- 参数数据类型未知的可变参数函数
- 使用其他模板类型参数作为要在函数签名中使用的类型别名声明
- 如何避免具有相同类型参数的函数中的错误
- 将内置类型变量传递给只有一个类类型参数的"+"运算符函数时自动类型转换的构造函数
- 使用返回不完整类型的函数作为默认参数
- 迭代器的模板参数:函数在调用时推断类型?
- EXPECT_CALL具有 unique_ptr 引用类型参数的模拟函数
- 是否可以使用泛型枚举类型作为函数的参数?
- 如何动态加载和调用具有特定于库的类型作为函数参数的符号
- SFINAE 和模板函数实例化:为什么在启用了 SFINAE 类型的函数参数中使用模板参数时无法推断模板参数?
- 使用模板将任意类型参数传递给 C++ 中的函数
- 具有可变参数类型参数的可变参数函数
- C++ 如何将参数绑定到具有相同返回类型的函数,并将它们全部存储在一个容器中
- 具有非模板类型参数的模板函数的重载解析