How to get an inout constructor working with a template wrapper

Steven Schveighoffer schveiguy at gmail.com
Fri Jul 27 14:38:27 UTC 2018


On 7/27/18 9:29 AM, aliak wrote:
> Ok, thanks to Simen from another post [0], I just figured out what the 
> correct constructor and factory method for a template wrapper should be:
> 
> https://run.dlang.io/is/S4vHzL
> 
> struct W(T) {
>      T val;
>      this(U : T, this This)(auto ref U val) {
>          this.val = val;
>      }
> }
> 
> auto wrap(T)(auto ref T t) {
>      return W!T(t);
> }
> 
> Seems to catch all cases!

And instantiate a new template for all mutabilities. Whereas inout would 
only instantiate one (and disallows modification of val if not const or 
immutable).

-Steve


More information about the Digitalmars-d-learn mailing list