You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -216,7 +216,7 @@ The "Proxy" library is a self-contained solution for runtime polymorphism in C++
216
216
- **Concepts**: To facilitate template programming with "Proxy", 3 concepts are exported from a facade type. Namely, [`proxiable`](https://ngcpp.github.io/proxy/spec/proxiable), [`proxiable_target`](https://ngcpp.github.io/proxy/spec/proxiable_target) and [`inplace_proxiable_target`](https://ngcpp.github.io/proxy/spec/inplace_proxiable_target).
217
217
- **Allocator awareness**: [function template `allocate_proxy`](https://ngcpp.github.io/proxy/spec/allocate_proxy) is able to create a `proxy` from a value with any custom allocator. In C++11, [`std::function`](https://en.cppreference.com/w/cpp/utility/functional/function) and [`std::packaged_task`](https://en.cppreference.com/w/cpp/thread/packaged_task) had constructors that accepted custom allocators for performance tuning, but these were [removed in C++17](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0302r1.html) because "the semantics are unclear, and there are technical issues with storing an allocator in a type-erased context and then recovering that allocator later for any allocations needed during copy assignment". These issues do not apply to `allocate_proxy`.
218
218
- **Configurable constraints**: [`facade_builder`](https://ngcpp.github.io/proxy/spec/basic_facade_builder) provides full support for constraints configuration, including memory layout (by [`restrict_layout`](https://ngcpp.github.io/proxy/spec/basic_facade_builder/restrict_layout)), copyability (by [`support_copy`](https://ngcpp.github.io/proxy/spec/basic_facade_builder/support_copy)), relocatability (by [`support_relocation`](https://ngcpp.github.io/proxy/spec/basic_facade_builder/support_relocation)), and destructibility (by [`support_destruction`](https://ngcpp.github.io/proxy/spec/basic_facade_builder/support_destruction)).
219
-
- **Reflection**: `proxy` supports type-based compile-time reflection for runtime queries. Please refer to [`facade_builder::add_reflection`](https://ngcpp.github.io/proxy/spec/basic_facade_builder/add_reflection) and [function template `proxy_reflect`](https://ngcpp.github.io/proxy/spec/proxy_reflect) for more details.
219
+
- **Reflection**: `proxy` supports type-based compile-time reflection for runtime queries. Please refer to [`facade_builder::add_reflection`](https://ngcpp.github.io/proxy/spec/basic_facade_builder/add_reflection) and [function template `reflect`](https://ngcpp.github.io/proxy/spec/proxy_indirect_accessor/reflect) for more details.
220
220
- **Non-owning proxy**: Although `proxy` can manage the lifetime of an object effectively, similar to a smart pointer, we sometimes want to dereference it before passing to a non-owning context. This has been implemented as an extension since 3.2.0. Please refer to [function template `make_proxy_view`](https://ngcpp.github.io/proxy/spec/make_proxy_view), [alias template `proxy_view`, class template `observer_facade`](https://ngcpp.github.io/proxy/spec/proxy_view) and [`skills::as_view`](https://ngcpp.github.io/proxy/spec/skills_as_view) for more details.
221
221
- **RTTI**: [RTTI (run-time type information)](https://en.wikipedia.org/wiki/Run-time_type_information) provides "weak" reflection capability in C++ since the last century. Although it is not as powerful as reflection in some other languages (like `Object.GetType()` in C# or `Object.getClass()` in Java), it offers the basic infrastructure for type-safe casting at runtime. Since 4.0.0, "RTTI for `proxy`" has been implemented as an extension and allows users to opt-in for each facade definition. Please refer to [`skills::rtti`](https://ngcpp.github.io/proxy/spec/skills_rtti) for more details.
222
222
- **Shared and weak ownership**: Although `proxy` can be created from a [`std::shared_ptr`](https://en.cppreference.com/w/cpp/memory/shared_ptr), extensions are available to create `proxy` objects with shared and weak ownership in a more efficient way since 3.3.0. Please refer to [function template `make_proxy_shared`](https://ngcpp.github.io/proxy/spec/make_proxy_shared), [`allocate_proxy_shared`](https://ngcpp.github.io/proxy/spec/allocate_proxy_shared), [alias template `weak_proxy`, class template `weak_facade`](https://ngcpp.github.io/proxy/spec/weak_proxy) and [`skills::as_weak`](https://ngcpp.github.io/proxy/spec/skills_as_weak) for more details.
@@ -243,7 +243,7 @@ Fetch via [CPM](https://github.com/cpm-cmake/CPM.cmake) (a thin wrapper over CMa
243
243
```cmake
244
244
CPMAddPackage(
245
245
NAME msft_proxy4
246
-
GIT_TAG 4.0.2
246
+
GIT_TAG 4.1.0
247
247
GIT_REPOSITORY https://github.com/ngcpp/proxy.git
248
248
)
249
249
@@ -259,7 +259,7 @@ Place a wrap file at `subprojects/proxy.wrap` and Meson will fetch the source au
Copy file name to clipboardExpand all lines: docs/spec/README.md
+13-3Lines changed: 13 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,7 +28,7 @@ This document provides the API specifications for the C++ library Proxy (version
28
28
|[`is_bitwise_trivially_relocatable`](is_bitwise_trivially_relocatable.md)| Specifies whether a type is bitwise trivially relocatable |
29
29
|[`not_implemented`](not_implemented.md)| Exception thrown by `weak_dispatch` for the default implementation |
30
30
|[`operator_dispatch`](operator_dispatch/README.md)| Dispatch type for operator expressions with accessibility |
31
-
|[`proxy_indirect_accessor`](proxy_indirect_accessor.md)| Provides indirection accessibility for `proxy`|
31
+
|[`proxy_indirect_accessor`](proxy_indirect_accessor/README.md)| Provides indirection accessibility for `proxy`|
32
32
|[`proxy_view`<br />`observer_facade`](proxy_view.md)| Non-owning `proxy` optimized for raw pointer types |
33
33
|[`proxy`](proxy/README.md)| Wraps a pointer object matching specified facade |
34
34
|[`substitution_dispatch`](substitution_dispatch/README.md)| Dispatch type for `proxy` substitution with accessibility |
@@ -55,8 +55,18 @@ This document provides the API specifications for the C++ library Proxy (version
55
55
|[`make_proxy_shared`](make_proxy_shared.md)| Creates a `proxy` object with shared ownership |
56
56
|[`make_proxy_view`](make_proxy_view.md)| Creates a `proxy_view` object |
57
57
|[`make_proxy`](make_proxy.md)| Creates a `proxy` object potentially with heap allocation |
58
-
|[`proxy_invoke`](proxy_invoke.md)| Invokes a `proxy` with a specified convention |
59
-
|[`proxy_reflect`](proxy_reflect.md)| Acquires reflection information of a contained type |
58
+
|[`proxy_invoke`](proxy_invoke.md)| (Deprecated since 4.1.0; use [`invoke`](proxy_indirect_accessor/invoke.md)) Invokes a `proxy` with a specified convention |
59
+
|[`proxy_reflect`](proxy_reflect.md)| (Deprecated since 4.1.0; use [`reflect`](proxy_indirect_accessor/reflect.md)) Acquires reflection information of a contained type |
60
+
61
+
### Non-Member Functions
62
+
63
+
The following are not namespace-scope functions; each is a non-member function of [`proxy`](proxy/README.md) and [`proxy_indirect_accessor`](proxy_indirect_accessor/README.md), found only via [argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl). Each is documented separately for the two classes.
64
+
65
+
| Name | For `proxy<F>`| For `proxy_indirect_accessor<F>`|
0 commit comments