I do not understand copy constructors
Learner
learner at gmail.com
Thu Aug 12 15:57:37 UTC 2021
On Thursday, 12 August 2021 at 15:50:05 UTC, Tejas wrote:
> On Thursday, 12 August 2021 at 15:39:40 UTC, Learner wrote:
>> On Thursday, 12 August 2021 at 14:57:16 UTC, Steven
>> Schveighoffer wrote:
>>> [...]
>>
>> It is not clear to me why the inout generated copy constructor
>> of the B structure is not able to copy the A structure.
>>
>> [...]
>
> Why will copy constructor of ```struct B``` accept argument of
> type ```A```?
You are right, I forgot the A member, now it is clear:
struct A
{
int[] data;
this(ref return scope A rhs) {}
this(ref return scope const A rhs) const {}
this(ref return scope immutable A rhs) immutable {}
}
struct B
{
// default generated copy constructor, by section
14.15.6.2
this(ref return scope inout(B) src) inout
{
foreach (i, ref inout field; src.tupleof)
this.tupleof[i] = field;
}
A a;
}
Error: none of the overloads of `__ctor` are callable using a
`inout` object, candidates are:
`A.this(return ref scope A rhs)`
`A.this(return ref scope const(A) rhs)`
`A.this(return ref scope immutable(A) rhs)`
Thank you everybody.
More information about the Digitalmars-d-learn
mailing list