Lossy packing 32 bit integer to 16 bit
A few improvements:


Assignment operator (=) should return a reference to short_int32_t, returning *this in the implementation.
Operator &lt; or any other comparison/arithmetical operator for that matter, should be const, since they only read the object's state. E.g.: bool operator &lt; (short_int32_t x) const.
Where are the other comparison operators, BTW? I would expect at least ==,!=,&lt;,&gt;,&lt;=,&gt;=.
get/set are good enough names, but wouldn't maybe set32 and get32 be more idiomatic in this case? Or perhaps even more explicit, such as fromInt32 and toInt32.
Consider making those global inline functions member of the class, if they are never used elsewhere.