A const reference is a reference that may refer to a const object.
const reference is reference to const.
nonconst reference is reference to a nonconst type.
A nonconst reference may be attached only to an object of the same type as the reference itself.
A const reference may be bound to an object of a different but related type or to an rvalue. (when bound to an object of a different but related type, compiler may give a warning.)