Spesso uso la seguente sintassi:
std::vector<foo> vec;
vec.push_back( someClass.getFoo(...).modifyAndReturn() );
Considerato la sicurezza delle eccezioni, cito lo standard sul comportamento di push back del vettore (23.3.7.5):
If an exception is thrown other than by the copy constructor, move constructor, assignment operator, or move assignment operator of T or by any InputIterator operation there are no effects. If an exception is thrown by the move constructor of a non-CopyInsertable T, the effects are unspecified.
- È una buona pratica utilizzare i push back complicati?
- C'è qualche eccezione pericoli?