为什么具有类内初始化程序的静态成员必须是整数类型?

时间:2014-04-03 09:09:29

标签: c++

只有当成员是非易失性const整数类型时,C ++才能在类声明中初始化常量静态成员。

但为什么整体类型?浮点数等其他类型是否存在任何实现问题?精度可能吗?

struct testClass
{
    static const int val = 12; 
    //static const float val = 12; 
};

1 个答案:

答案 0 :(得分:2)

注意。编译器模拟目标上的浮点实现并不总是容易(甚至可行),并且无论如何,通过改变舍入模式可以动态地改变目标上的浮点行为。

所以涉及编译时浮点值的任何事情都很棘手。 C ++ 03没有任何可能鼓励它的东西; - )

C ++ 11允许您使用constexpr代替const