【发布时间】:2013-01-10 20:09:18
【问题描述】:
可能重复:
C++: Why can’t I use float value as a template parameter?
我有这门课:
template<typename ValueType, ValueType DefaultValue>
class SomeClass
{
public:
SomeClass() : m_value(DefaultValue){}
ValueType m_value;
};
我想这样使用它:
SomeClass<int, 1> intObj; //ok
SomeClass<float, 1.f> floatObj; //error: 'float' : illegal type for non-type template parameter 'DefaultValue'
您能否解释一下为什么在使用float 时会出现此错误?
我想使用类似的东西来表示 RGBA 颜色并使用默认值初始化通道以用于不同的颜色表示(例如白色)。
【问题讨论】:
-
简短的回答是标准不允许这样做。
-
@K-ballo 是的,这是同一个问题。请关闭:)
-
@Felics:我已经投票关闭它,等待另外 4 票...
-
@K-ballo 我已经投票了:) +3
-
该副本非常方便说明原因以及解决方法。