digitalmars.D.learn - Can you move a disabled this struct in to a container type if it's an
- aliak (27/27) Dec 12 2018 Ie:
- Paul Backus (4/18) Dec 12 2018 The only error I get when I compile this has to do with incorrect
- aliak (5/26) Dec 13 2018 Crap! So sorry, this was supposed to be this(this) and that auto
Ie:
struct S {
disable this();
this(int i) {}
}
struct Container(T) {
T value;
this(auto ref T value) {
this.value = value;
}
}
void main() {
auto a = Container!S(S(3)); // can't do this.
}
I can build a custom constructor for Container that makes this
work:
static auto construct(Args...)(auto ref Args args) {
import std.algorithm: move;
auto value = T(args);
auto opt = Container!T.init;
opt.value = move(value);
return move(opt);
}
But is there a way to do it without adding a custom constructor
type?
Cheers,
- Ali
Dec 12 2018
On Wednesday, 12 December 2018 at 20:05:18 UTC, aliak wrote:
Ie:
struct S {
disable this();
this(int i) {}
}
struct Container(T) {
T value;
this(auto ref T value) {
this.value = value;
}
}
void main() {
auto a = Container!S(S(3)); // can't do this.
}
The only error I get when I compile this has to do with incorrect
use of `auto ref`. If I change the constructor's signature to
`this()(auto ref T value)`, it works fine.
Dec 12 2018
On Wednesday, 12 December 2018 at 21:11:38 UTC, Paul Backus wrote:On Wednesday, 12 December 2018 at 20:05:18 UTC, aliak wrote:Crap! So sorry, this was supposed to be this(this) and that auto ref is not supposed to be there :( Posted new (and correct) message: https://forum.dlang.org/thread/sasdsmxmikxqfxhtbpyo forum.dlang.orgIe: struct S { disable this(); this(int i) {} } struct Container(T) { T value; this(auto ref T value) { this.value = value; } } void main() { auto a = Container!S(S(3)); // can't do this. }The only error I get when I compile this has to do with incorrect use of `auto ref`. If I change the constructor's signature to `this()(auto ref T value)`, it works fine.
Dec 13 2018








aliak <something something.com>