Add ElementReference - a generic smart reference
Add ElementReference - a generic smart reference

ElementReference<T> acts as much as possible like an lvalue reference of
T::value_type. It has:
* all move and copy ctors and assignment deleted, and
* an rvalue ref-qualifier on all assignment and in-/decrement operators

to limit the use of the proxy type as much as possible. The intent is to
either copy to value_type or to modify the referenced element directly,
i.e. without going through an lvalue.

The noexcept specification is derived from the noexcept-ness of the
Accessor functions to the original container/vector.

Refs: gh-115
Signed-off-by: Matthias Kretz <372ea4eca737a13cd010ee806d4ce7b98ee71550@kde.org>

VcDevel/Vc,chr-engwer/Vc,VcDevel/Vc,chr-engwer/Vc,VcDevel/Vc,VcDevel/Vc,chr-engwer/Vc