The C++14 Standard says:
A subobject can be a member subobject, a base class subobject, or an array element. An object that is not subobject of any other object is called a complete object. (§1.8(2))
unsigned char & r=reinterpret_cast<unsigned char&>(i);
The object representation of an object of type T is the sequence of N unsigned char objects taken up by the object of type T, ... (§3.9(4))
The sentence is defining the term subobject as being one of: a member subobject, a base class subobject, or an array element.
Your snippet has nothing to do with subobjects.
r is a reference, not an object. Moreover, it doesn't even refer to an object, it simply aliases the first byte of
An object is created by a definition (3.1), by a new-expression (5.3.4), when implicitly changing the active member of a union (9.3), or when a temporary object is created (4.4, 12.2).
i is an object created by a definition. As
int is not a class or array type, it has no subobjects. The object representation, the underlying array of
unsigned char that constitutes the storage of
i, is not an object - it's not created in any of those contexts described above. The wording of the definition object representation is the subject of core issue 1701 (h/t T.C.).