Why compiler allows narrowing conversions

前端 未结 3 1183
醉梦人生
醉梦人生 2020-12-16 05:30

Can anyone please explain to me, why the compiler allows initialize variables of built-in type if the initializer might lead to the loss of information?

For example

3条回答
  •  长情又很酷
    2020-12-16 05:51

    One of the features of initializer lists is that narrowing conversions are not allowed. But the language definition doesn't distinguish between warnings and errors; when code is ill-formed it requires "a diagnostic", which is defined as any message from a set of implementation-defined messages. Warnings satisfy this requirements. That's the mechanism for non-standard extensions: having issued a warning, the compiler is free to do anything it wants to, including compiling something according to implementation-specific rules.

提交回复
热议问题