我刚刚编写了以下代码段:
// Fix for MinGW 4.9.2 bug - std::log2 is missing there
template <typename T>
T log2 (T value)
{
static const T l2 = std::log(T(2));
return std::log(value) / l2;
}
显然,l2
应对每个T
类型都是唯一的,因为 类型为T
。但它是否按照C ++标准实际工作?
答案 0 :(得分:2)
注意一旦实例化
log2<double>
和
log2<float>
是两个完全不同的功能。他们都得到了自己的static
变量。在模板实例化之后,这与您有两个函数的情况相同:
double log2(double) {
static double x;
/*...*/
}
和
float log2(float) {
static float x;
/*...*/
}
在6:00左右的示例中,这也很好地解释了here。