Is static_cast<T>(...) compile-time or run-time?

c++, c++11, casting, compile-time, runtime

Solution

Depends on what you are casting to what else. E.g. `static_cast<std::string>("Hello")` ends up calling `std::string` constructor.

Off the top of my head, I can't think of any case where `reinterpret_cast` would need to generate actual machine instructions. It's just telling the compiler: take this bit pattern, and believe it to be a value this type.

Problem

Is `static_cast<T>(...)` something that gets done at compile-time or run-time? I've googled around but I got different answers. Also, `dynamic_cast<T>(...)` is obviously runtime - but what about `reinterpret_cast<T>(...)`?

Original source