Old code no longer working on any DMD compilers
aldacron at gmail.com
Fri Sep 6 06:53:21 UTC 2019
On Friday, 6 September 2019 at 05:59:30 UTC, Jamie wrote:
> time and fmod is called so it breaks. In case 3, with default
> struct arguments, I thought that the constructor I have defined
> was being called, however the default constructor was being
> called (this()) so fmod wasn't being called.
> The reason why my old code worked was because it used the
> default arguments and I wasn't actually calling the constructor
> I defined. When I removed the default arguments in the
> constructor and tried case 2 it obviously didn't work.
> Am I understanding correctly? Thanks
You're right about case 1 and case 2, and partially correct about
case 3. Structs don't actually have default constructors. They
have default *initializers*. In other words, s = S() is the same
as s = S.init. See item #4 in the documentation for struct
"If the ParameterList is empty, the struct instance is default
So yes, your constructor is not being called.
More information about the Digitalmars-d-learn