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

Vittorio Romeo picture Vittorio Romeo · Aug 27, 2013 · Viewed 9.3k times · Source

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>(...)?

Answer

Igor Tandetnik picture Igor Tandetnik · Aug 27, 2013

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.