A value can be stored in a location only if one of the types of the value is assignment compatible with the type of the location. A type is always assignable-to itself. Assignment compatibility can often be determined at compile time, in which case, there is no need for testing at run time. Assignment compatibility is described in detail in §I.8.7.