C++ Object Token Library — это эволюция Unified Pointer Library из
этой темыАвтор: ViTech
Дата: 17.06.18
.
The C++ Object Token Library (CppOtl) provides a set of tokens that are
designed to manage an object's lifetime, similar to smart pointers from the
C++ standard library. CppOtl contains tokens for unique and shared
ownership of objects, weak observers for them, adds a unified type of
ownership. Also, it introduces tokens with single (not_null) multiplicity,
which can mitigate the "null references: billion-dollar mistake".
Tokens from CppOtl are integrated with smart pointers from the C++ standard
library and can be consistently converted from one to another. CppOtl is
intended for cases when there is not enough functionality of smart pointers
from the C++ standard library and additional capabilities are required.
Features:
1. A set of consistent tokens that can express associative links, function
parameters and variables according to a UML model.
2. `single` tokens that always have a linked object and can not be empty.
3. `trackable` and `untrackable` tokens for appropriate use-case
requirements.
4. The `safe::weak` can be created both from the `safe::unique` and the
`safe::shared`. It will become `expired` (but not `dangling`) when an owner
of a watched object is destroyed.
5. The `safe::unified` can temporarily prolong an object's lifetime in a
given scope that allows finishing work with an object even other tokens is
destroyed.
6. A constructor with the `itself` parameter allows a token itself to
create an object with given attributes.
7. Algorithms for unified access to object tokens.
8. Tokens meet the requirements of `std::ranges::range`, that allows to
pass them to functions that accept `range` argument.
9. Traits allow recognizing characteristics of tokens in compile-time.
10. Focusing on maximum error detection in compile-time, several assertions
in a debug build, minimum overhead in a release build, avoiding exceptions.
11. The ability to create other token classes with required
characteristics.
Здравствуйте, ViTech, Вы писали:
VT>C++ Object Token Library — это эволюция Unified Pointer Library из этой темыАвтор: ViTech
Дата: 17.06.18
.
А можно в кратце по-русски, в чём отличие от старой практики со смартпоинтерами из СТЛ/Буста? Что такое новое дают эти токены, что смарт поинтеры или обычные контейнеры не давали?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
VT>>C++ Object Token Library — это эволюция Unified Pointer Library из этой темыАвтор: ViTech
Дата: 17.06.18
.
V>А можно в кратце по-русски, в чём отличие от старой практики со смартпоинтерами из СТЛ/Буста? Что такое новое дают эти токены, что смарт поинтеры или обычные контейнеры не давали?
По-русски (но вкратце не выйдет) был срач в
упомянутой темеАвтор: ViTech
Дата: 17.06.18
, из которого по ответам автора можно (попытаться) понять его идею, но практическое её применение и полезность так и остались под вопросом.
Здравствуйте, Vain, Вы писали:
V>А можно в кратце по-русски, в чём отличие от старой практики со смартпоинтерами из СТЛ/Буста? Что такое новое дают эти токены, что смарт поинтеры или обычные контейнеры не давали?
Практика осталась та же, можно считать, что токены — это умные указатели и использовать их так же. Токены расширяют возможности умных указателей из STL (дополнительные возможности в списке Features), позволяют писать код более выразительно и безопасно. Есть пример
Car, можете попробовать реализовать его с помощью умных указателей из STL и сравнить с
решением на токенах.
Здравствуйте, flаt, Вы писали:
F>По-русски (но вкратце не выйдет) был срач в упомянутой темеАвтор: ViTech
Дата: 17.06.18
, из которого по ответам автора можно (попытаться) понять его идею, но практическое её применение и полезность так и остались под вопросом.
автор в 2020-м угарает по UML, мне кажется этой информации достаточно чтобы не пытаться его понять.