Look at the code below, this const static int num1 = 8; compiles. However, the const static double num2 = 8.8; code gives an error. Their modifiers are all const static, so why does int work, but double and other floating-point types result in an error?
struct S {
    const static int num1 = 8;       // OK
    const static double num2 = 8.8;  // error
};
I've tried some built-in types of C++ and found that
- integer members such as int,short,long, andcharcan be defined withconst staticin the class and directly initialized, while
- floating-point members such as floatanddoublecan not.
This confuses me a lot.
 
     
     
     
    