Passing struct to function
Michał
mmcomando at gmail.com
Thu Jun 14 04:46:23 UTC 2018
On Wednesday, 13 June 2018 at 17:37:44 UTC, Steven Schveighoffer
wrote:
> Hm... the only way to do it in D is to provide a function that
> checks whether the small vector optimization is in play, and
> return a pointer/slice to itself.
>
> With D it is possible to alias the getter function that
> provides the actual data to allow code to look nicer.
>
> For example (crude example):
>
> struct Vector(T)
> {
> bool svo; // small vector optimization
> union
> {
> T[4] local;
> T[] heap;
> }
> inout(T)[] get() inout { return svo ? local[], heap; }
> alias get this;
> ... // implement specialized append, concat operators, etc.
> }
>
> Now, you can use Vector as if it were an array, and it just
> works.
>
> -Steve
Thanks for an idea, I will try it.
More information about the Digitalmars-d-learn
mailing list