With regard to terminology, I think many people including myself
define the word 'object' as a synonym for 'variable'
"Object" and "variable" are not synonyms:
[basic.pre]/6:
> A variable is introduced by the declaration of a reference other than a non-static data member or of an object. The variable's name, if any, denotes the reference or object.
So:
* A variable has a declaration and a name.
* It's name denotes either an object or a reference.
* You can have objects that are not denoted by any variable names:
f(T())
* You can have variables that do not denote an object:
int& r = /*...*/;