mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-31 22:11:53 +00:00
Update C++11 notes in TODO
This commit is contained in:
parent
8a87a2fbee
commit
da1258e2e6
36
TODO
36
TODO
@ -34,32 +34,28 @@ Comments appear in the code prefixed by "ABI"
|
||||
C++-11
|
||||
======
|
||||
|
||||
* My c++11 branch adds re-implements PointerHolder so that it is
|
||||
interchangeable with std::shared_ptr. It is not actually possible to
|
||||
just replace PointerHolder with std::shared_ptr for two reasons:
|
||||
there is no automatic creation of std::shared_ptr<T> from T* like
|
||||
there is for PointerHolder, which breaks some code, and also there
|
||||
is no automatic conversion from something like
|
||||
std::vector<PointerHolder<T>> to std::vector<std::shared_ptr<T>>. It
|
||||
may be a good idea to replace PointerHolder with std::shared_ptr in
|
||||
the API even if it requires some work for the developer, but even if
|
||||
that isn't worth it, we should find all occurrences of PointerHolder
|
||||
within the code and replace with std::shared_ptr or std::unique_ptr
|
||||
as needed. This will definitely break binary compatibility as the
|
||||
PointerHolder<Members> pattern is part of the ABI for almost every
|
||||
class.
|
||||
|
||||
* QIntC.hh could be simplified with type_traits.
|
||||
|
||||
* Search for ::iterator and ::const_iterator and replace with either
|
||||
auto or foreach-style iteration.
|
||||
|
||||
* There may be some places where std::function and lambdas can
|
||||
simplify handlers rather than using classes with apply methods.
|
||||
|
||||
* Find places where we declare but don't define copy and assignment
|
||||
and replace with deleted methods to move errors from link to compile
|
||||
time.
|
||||
* My c++11 branch adds re-implements PointerHolder so that it is
|
||||
interchangeable with std::shared_ptr. We may not actually want to
|
||||
ever do this because it turns out PointerHolder is slightly more
|
||||
performant than std::shared_ptr, at least as of g++ 9.2.1. It is not
|
||||
actually possible to just replace PointerHolder with std::shared_ptr
|
||||
for two reasons: there is no automatic creation of
|
||||
std::shared_ptr<T> from T* like there is for PointerHolder, which
|
||||
breaks some code, and also there is no automatic conversion from
|
||||
something like std::vector<PointerHolder<T>> to
|
||||
std::vector<std::shared_ptr<T>>. It may be a good idea to replace
|
||||
PointerHolder with std::shared_ptr in the API even if it requires
|
||||
some work for the developer, but even if that isn't worth it, we
|
||||
should find all occurrences of PointerHolder within the code and
|
||||
replace with std::shared_ptr or std::unique_ptr as needed. This will
|
||||
definitely break binary compatibility as the PointerHolder<Members>
|
||||
pattern is part of the ABI for almost every class.
|
||||
|
||||
|
||||
Page splitting/merging
|
||||
|
Loading…
Reference in New Issue
Block a user