C++ also has templates (one definition multiple types) and concepts (constrain the accepted types to have particular properties) which are all resolved at compile time.