On Tuesday, 4 July 2017 at 00:46:36 UTC, Timothee Cour wrote:
How would I disable the following?
```
auto a1=A(1);
auto a2=A(1, "b");
Disable the struct's default constructor, which implicitly
disables struct literals for it [1].
---
struct A
{
int a;
string b;
@disable this(); // Disable the default constructor ->
implicitly disables struct literals
}
---
// @disable default constructors with N(N>=1) arguments
Structs have only a single default constructors (with zero
arguments) - which you can disable (as shown above); you were
using struct literals [2].
I'd like to force the user to set fields explicitly, so as to
make it more safe to add / move fields
If I understand you correctly, that is what you get when you
@disable the default constructor (again, there is only the zero
arguments one).
You will have to initialize your structs, explicitly, then,
though, i.e. `A a = A.init`.
[1] https://dpaste.dzfl.pl/b7eef8518799
[2] https://dlang.org/spec/struct.html#StructLiteral