Struct copy constructor with inout
Steven Schveighoffer
schveiguy at gmail.com
Tue Nov 14 16:58:25 UTC 2023
On Tuesday, 14 November 2023 at 13:58:17 UTC, Paul Backus wrote:
> It's easier to see if you compare the actual and expected
> argument lists side-by-side
>
> Expected: (ref const(S1) s) const
> Actual: ( const(S1) )
> ^^^^^
> Mismatched 'this' argument
This would be a much better output. Is this something you made up
or did you get it from one of the compilers? LDC2, which is what
I tested with, reported in the format that I mentioned.
It might be something to add to the compiler that mismatches in
`this` qualifiers should be reported separately, especially since
the mutable form has no explicit qualifier. But I guess this is
only an issue for constructors, because normal const functions
can be called with mutable objects.
That being said, I still consider this a bug, if the inout
version works, the const version should work as well. I don't see
the difference.
So an interesting thing, if I change the `int i` to `int *i` in
`S2`, instead of compiling I get the error:
```
Error: `inout` constructor `testinoutctor.S2.this` creates const
object, not mutable
```
Which gives a much nicer error message!
-Steve
More information about the Digitalmars-d-learn
mailing list