При использовании std::vector s, std::list (или других STL-контейнеров) я часто пишу это, для краткости кода (а не для ввода явного vec[index] каждый раз) и эффективности распределения памяти (избегая копирования/переместить), и я полагаю, что я не единственный, кто может это сделать:
std::vector<A> vec;
vec.emplace_back();
A &element = vec[vec.size()-1];
element.prop = "value";
Почему методы STL-контейнеров emplace, emplace_back и emplace_front не возвращают T&?. Это позволит просто написать это, а не использовать теневой vec.size()-1:
std::vector<A> vec;
A &element = vec.emplace_back();
element.prop = "value";