Commit da1258e2e679bc8b9471b5d9ff35d8473e76e062
1 parent
8a87a2fb
Update C++11 notes in TODO
Showing
1 changed file
with
16 additions
and
20 deletions
TODO
| @@ -34,32 +34,28 @@ Comments appear in the code prefixed by "ABI" | @@ -34,32 +34,28 @@ Comments appear in the code prefixed by "ABI" | ||
| 34 | C++-11 | 34 | C++-11 |
| 35 | ====== | 35 | ====== |
| 36 | 36 | ||
| 37 | -* My c++11 branch adds re-implements PointerHolder so that it is | ||
| 38 | - interchangeable with std::shared_ptr. It is not actually possible to | ||
| 39 | - just replace PointerHolder with std::shared_ptr for two reasons: | ||
| 40 | - there is no automatic creation of std::shared_ptr<T> from T* like | ||
| 41 | - there is for PointerHolder, which breaks some code, and also there | ||
| 42 | - is no automatic conversion from something like | ||
| 43 | - std::vector<PointerHolder<T>> to std::vector<std::shared_ptr<T>>. It | ||
| 44 | - may be a good idea to replace PointerHolder with std::shared_ptr in | ||
| 45 | - the API even if it requires some work for the developer, but even if | ||
| 46 | - that isn't worth it, we should find all occurrences of PointerHolder | ||
| 47 | - within the code and replace with std::shared_ptr or std::unique_ptr | ||
| 48 | - as needed. This will definitely break binary compatibility as the | ||
| 49 | - PointerHolder<Members> pattern is part of the ABI for almost every | ||
| 50 | - class. | ||
| 51 | - | ||
| 52 | -* QIntC.hh could be simplified with type_traits. | ||
| 53 | - | ||
| 54 | * Search for ::iterator and ::const_iterator and replace with either | 37 | * Search for ::iterator and ::const_iterator and replace with either |
| 55 | auto or foreach-style iteration. | 38 | auto or foreach-style iteration. |
| 56 | 39 | ||
| 57 | * There may be some places where std::function and lambdas can | 40 | * There may be some places where std::function and lambdas can |
| 58 | simplify handlers rather than using classes with apply methods. | 41 | simplify handlers rather than using classes with apply methods. |
| 59 | 42 | ||
| 60 | -* Find places where we declare but don't define copy and assignment | ||
| 61 | - and replace with deleted methods to move errors from link to compile | ||
| 62 | - time. | 43 | +* My c++11 branch adds re-implements PointerHolder so that it is |
| 44 | + interchangeable with std::shared_ptr. We may not actually want to | ||
| 45 | + ever do this because it turns out PointerHolder is slightly more | ||
| 46 | + performant than std::shared_ptr, at least as of g++ 9.2.1. It is not | ||
| 47 | + actually possible to just replace PointerHolder with std::shared_ptr | ||
| 48 | + for two reasons: there is no automatic creation of | ||
| 49 | + std::shared_ptr<T> from T* like there is for PointerHolder, which | ||
| 50 | + breaks some code, and also there is no automatic conversion from | ||
| 51 | + something like std::vector<PointerHolder<T>> to | ||
| 52 | + std::vector<std::shared_ptr<T>>. It may be a good idea to replace | ||
| 53 | + PointerHolder with std::shared_ptr in the API even if it requires | ||
| 54 | + some work for the developer, but even if that isn't worth it, we | ||
| 55 | + should find all occurrences of PointerHolder within the code and | ||
| 56 | + replace with std::shared_ptr or std::unique_ptr as needed. This will | ||
| 57 | + definitely break binary compatibility as the PointerHolder<Members> | ||
| 58 | + pattern is part of the ABI for almost every class. | ||
| 63 | 59 | ||
| 64 | 60 | ||
| 65 | Page splitting/merging | 61 | Page splitting/merging |