The*_* do 6 c++ templates c++11
是否有任何理由不能将double作为参数类型与模板?
例如:
template<int N>//-< Legal
struct
{
};
template<double N>//-< Illegal
struct
{
};
Run Code Online (Sandbox Code Playgroud)
在C++ 11中是否有任何更新?
鉴于浮点算术仅给出模糊结果(sqrt(2.0)*sqrt(2.0)
可能不相等2.0
),您如何建议使用double
模板参数可能有用?如果你有一个模板
template<double D> // not allowed in C++
class X {};
Run Code Online (Sandbox Code Playgroud)
并专门化
template<>
class X<2.0> {};
Run Code Online (Sandbox Code Playgroud)
然后
X<1.0+1.0> x;
Run Code Online (Sandbox Code Playgroud)
可能不会提到专业化.
我会说这严重限制了它的用处,我称之为残废.
这与精度有关,浮点数无法精确表示,并且您引用相同类型的可能性取决于数字的表示方式.考虑使用整数尾数和指数作为模板参数...
归档时间: |
|
查看次数: |
1112 次 |
最近记录: |