[Development] Move ctors for q_declare_shared types
Marc Mutz
marc.mutz at kdab.com
Fri Jun 26 22:20:11 CEST 2015
On Friday 26 June 2015 19:59:37 Thiago Macieira wrote:
> On Friday 26 June 2015 16:45:18 Marc Mutz wrote:
> > or that they don't have range-ctor or range-insert, or emplace, or
> > allocator support.
>
[...]
> I tried to implement emplace, but didn't find much value because Qt
> containers require the type contained to be default constructible and will
> make copies in the future anyway.
QList does not require the type to be default-constructible. I think only
QVector and QVarLengthArray do.
> As for allocators, I've been doing C++ for 20 years and I have never once
> ever used one. So that's a P6 "less than not important" task in my view.
I did:
https://github.com/GPGTools/pinentry/blob/master/secmem/secmem%2B%2B.h
Used here:
https://github.com/GPGTools/pinentry/blob/master/qt4/secstring.h
And with C++11/14 stateful allocators, I expect allocators to gain popularity:
e.g. QVarLengthArray can be superseded by something like
char pool[4096];
pool_allocator<T> alloc(pool);
std::vector<T, pool_allocator<T>> vec(alloc);
// ...
which would allow local-memory maps, too:
std::map<K, V, std::less<>, pool_allocator<std::pair<const K, V>>>
map(alloc);
Yes, that's what template aliases were invented for :)
Last time I looked (long ago, 2.4-ish), QtC had a per-document memory pool,
too. Don't remember how they handled container classes, though.
Thanks,
Marc
--
Marc Mutz <marc.mutz at kdab.com> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
Tel: +49-30-521325470
KDAB - The Qt Experts
More information about the Development
mailing list