gnu /
gcc /
e9681f5725f54a58098678cdea19d1e90d9a36e3 auto_vec copy/move improvements
- Unfortunately using_auto_storage () needs to handle m_vec being null.
- Handle self move of an auto_vec to itself.
- Make sure auto_vec defines the classes move constructor and assignment
operator, as well as ones taking vec<T>, so the compiler does not generate
them for us. Per https://en.cppreference.com/w/cpp/language/move_constructor
the ones taking vec<T> do not count as the classes move constructor or
assignment operator, but we want them as well to assign a plain vec to a
auto_vec.
- Explicitly delete auto_vec's copy constructor and assignment operator. This
prevents unintentional expenssive coppies of the vector and makes it clear
when coppies are needed that that is what is intended. When it is necessary to
copy a vector copy () can be used.
Signed-off-by: Trevor Saunders <tbsaunde@tbsaunde.org>
gcc/ChangeLog:
* vec.h (vl_ptr>::using_auto_storage): Handle null m_vec.
(auto_vec<T, 0>::auto_vec): Define move constructor, and delete copy
constructor.
(auto_vec<T, 0>::operator=): Define move assignment and delete copy
assignment.
1 file changed