Simplify the semantics of facade per spec #55
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
To simplify the semantics of
proxy
, several changes has been made as per the latest spec:facade
is no longer supported. An author of afacade
should guarantee everydispatch
is unique. Helper macros will serve this purpose with metaprogramming at compile time.concept basic_facade
was strengthened with the following additions: a)F::dispatch_types
shall be a specialization ofstd::tuple
; b) The type ofF::constraints
shall be exactlyconst pro::proxiable_ptr_constraints
, no implicit conversion is allowed; c) the maximum size and alignment defined byF::constraints
shall follow the rule of C++; d) WhenF::reflection_type
is notvoid
, it shall be trivially copyable.concept facade
was strengthen with the following addition: Each dispatch type defined byF::dispatch_types
shall be trivially default constructible.Some test cases are added to verify the constraints work as expected. No functional changes.