std.experimental.typecons.wrap.wrap
- multiple declarations
Function wrap.wrap
Wrap src in an anonymous class implementing Targets.
auto auto wrap(Source)
(
inout Source src
)
if (implementsInterface!(Source, Targets));
wrap creates an internal wrapper class which implements the
interfaces in Targets
using the methods of src
, then returns a
GC-allocated instance of it.
Source can be either a class
or a struct
, but it must
structurally conform with all the Targets
interfaces; i.e. it must provide concrete methods with compatible
signatures of those in Targets.
If Source is a struct
then wrapping/unwrapping will
create a copy; it is not possible to affect the original struct
through the wrapper.
The returned object additionally supports unwrap
.
Note
If Targets has only one entry and Source is a
class which explicitly implements it, wrap simply returns src
upcasted to Targets[0]
.
Bugs
wrap does not support interfaces which take their own type as either a parameter type or return type in any of its methods.
See Also
unwrap
for examples
Alias wrap.wrap
Authors
Andrei Alexandrescu, Bartosz Milewski, Don Clugston, Shin Fujishiro, Kenji Hara