c++ - 通用模板非类型参数

标签 c++ templates

我希望我的类接收一个非类型模板参数,但我不想指定非类型参数的类型。我可以这样写:

template<class Type, Type param>
class A
{};

然后可以按如下方式使用:

A<int,3> a;

这是多余的,因为一旦我知道 param = 3,那么我就知道 Type = int。有没有什么方法可以这样写,以便以下所有行都可以编译和实例化不同的类型?

A<3> a;
A<3.0> b;
A<3.0f> c;

最佳答案

不,那是不可能的。所有非类型模板参数的类型都必须在参数中定义,并且永远不能从使用中推断出来,即当编译器分析时,您需要 Type 已知参数 Type param

关于c++ - 通用模板非类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710842/

相关文章:

C++横向协变: return type differs due to incomplete type

java - 从 Java : Possible ? 调用 WinMain 还有其他方法吗?

C++ 虚拟析构函数和 vtable

c++ - Qt 插槽被调用两次

c++ - Linux C++ : How to properly use template specializations across multiple files?

javascript - 从 Meteor 中的导入文件夹渲染模板

c++ - Tcp Socket recv 函数不起作用 c++

当基类具有两个或多个模板参数时,c++11 别名基模板类变量在模板派生类中不起作用

c++ - 具有 `stdio.h` 函数的模板和名称查找

c++ - 子类作为参数?