O'Reilly logo

C++ High Performance by Bjorn Andrist, Viktor Sehr

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Example 2 – Creating a generic safe cast function

When casting between data types in C++ there is a multitude of different ways things can go wrong:

  • You might lose a value if casting to a integer type of lower bit length
  • You lose a value if casting a negative value to an unsigned integer
  • If casting from a pointer to any other integer than uintptr_t, the correct address might become wrong as C++ only guarantees that uintptr_t is the only integer type to withhold an address
  • If casting from double to float, the result might be int if the double value is too large for float to withhold
  • If casting between pointers with a static_cast(), we might get undefined behavior if the types aren't sharing a common base class

In order to make our code more ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required