From this answer to the question "When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?":
C-style cast and function-style cast are casts using
(type)objectortype(object), respectively.
It then begins to list the behavior of the C-style cast, but never tells whether the function-style cast is identical or not.
I'm asking because Resharper for C++ warns me in case of C-style casts but does not warn me in case of function-style casts:

In what way is the the function-style case different from the C-style cast? Or, if they are identical, is it a bug in Resharper and it should emit a warning, too? Is int(d) safe to use? It looks much simpler than the suggested static_cast<int>(d);.
I don't have a quote from the standard, but cppreference is usually good enough.
Explicit type conversion
The functional cast expression consists of a simple type specifier or a typedef specifier (in other words, a single-word type name:
unsigned int(expression)orint*(expression)are not valid), followed by a single expression in parentheses. This cast expression is exactly equivalent to the corresponding C-style cast expression.
As for Resharper, it's possible that to it C++ cast includes a functional cast, as that is only valid in C++.
The answer you linked in your question explains how safe a functional cast is. In your case int(d) should be equivalent to static_cast<int>(d). But in general a C-style or functional cast are unsafe as they can be equivalent to reinterpret_cast in certain situations, e.g. (double*)some_int_ptr.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With