我想知道为什么编译器不允许用const long double来初始化float,但却允许使用long double字面量进行初始化?难道我们在前者中丢失了精度吗?
float f {3.14L}; //compiles
const long double myConst {3.14};
float f{myConst}; // error: non-constant-expression cannot be narrowed from type 'long double' to 'float' in initializer list
float
表示3.14L
的值。 - Eric Postpischil