我希望我的类接收一个非类型模板参数,但我不想指定非类型参数的类型。我可以这样写:
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/