Сообщение Re[3]: использование round от 16.02.2018 8:48
Изменено 16.02.2018 9:19 rg45
R>>
R>>int value = int(std::round(3.14f));
R>>
VF>Это разве каст?
Конечно. Это выражение эквивалентно такому: (int)std::round(3.14f). Вот что сказано по этому поводу в стандарте (C++17):
8.2.3 Explicit type conversion (functional notation)
2 If the initializer is a parenthesized single expression, the type conversion expression is equivalent (in definedness, and if defined in meaning) to the corresponding cast expression (8.4)...
И вот еще цитата из 8.4:
8.4 Explicit type conversion (cast notation)
2 An explicit type conversion can be expressed using functional notation (8.2.3), a type conversion operator (dynamic_cast, static_cast, reinterpret_cast, const_cast), or the cast notation.
cast-expression: unary-expression ( type-id ) cast-expression
R>>
R>>int value = int(std::round(3.14f));
R>>
VF>Это разве каст?
Конечно. Такие выражения игогда назвают "function-style conversions" и они эквивалентны "cast expressions": (int)std::round(3.14f). Вот что сказано по этому поводу в стандарте (C++17):
8.2.3 Explicit type conversion (functional notation)
2 If the initializer is a parenthesized single expression, the type conversion expression is equivalent (in definedness, and if defined in meaning) to the corresponding cast expression (8.4)...
И вот еще цитата из 8.4:
8.4 Explicit type conversion (cast notation)
2 An explicit type conversion can be expressed using functional notation (8.2.3), a type conversion operator (dynamic_cast, static_cast, reinterpret_cast, const_cast), or the cast notation.
cast-expression: unary-expression ( type-id ) cast-expression