DuckPointer

Pointer to any type that extends Pointee.

To make a DuckPointer for a mixin, it's recommended to define a struct that only implements the mixin.

template DuckPointer (
Pointee
) if (
isExtendable!Pointee
) {}

Members

Structs

DuckPointer
struct DuckPointer
Undocumented in source.

Parameters

Pointee

The type the pointee refers to.

Examples

struct IFace1
{
    int getX() { return 12; }
}
struct Struct1
{
    int x;
    int getX() { return x; }
}

Struct1 s1;
s1.x = 42;
DuckPointer!IFace1 ptr1 = duck!IFace1( &s1 );
assert( ptr1.getX() == 42 );
struct MyMixinImpl
{
    mixin MyMixin!();
}
alias MixinPtr = DuckPointer!MyMixinImpl;

struct Struct1
{
    mixin MyMixin!();
}

Struct1 s1;
s1.x = 42;
MixinPtr ptr1 = MixinPtr( &s1 );
assert( ptr1.x == 42 );
assert( ptr1.getX() == 42 );
++ptr1.x;
assert( ptr1.x == 43 );
assert( ptr1.getX() == 43 );
assert( s1.x == 43 );

Meta