Using strong types to avoid common C++ programming errors
reliablecpp.com