-
-
Notifications
You must be signed in to change notification settings - Fork 608
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Relax isPOD rules so ctors don't make structs non-POD #3061
Conversation
|
Also, such changes can't go into the next release, which is supposed to be just for bug fixes. |
|
When exactly is this annoying release going to happen? |
|
Roger, this feature change is perhaps not yet complete either. |
|
@yebblies, May, perhaps? :) |
Actually, I'll just raise a separate pull for each problem that I deem necessary to change behaviour. |
The regression list is still not addressed. |
That's still around 40 regressions squashed though. Which is good going. |
Yes, and 7 or 8 more to go before we can do a release. |
|
I thought the idea was we branch and merge just the regressions into the release branch? If you're waiting for master to magically have zero regressions we may never see another dmd release. |
I've tried this before. It is not a magic zero cost way of doing things. Somebody's got to do the cherry-picking and merging (i.e. me), and this tends to get more and more error-prone and confusing as the two branches diverge.
We all need to work together to get a release out. We have a quite reasonable goal of "no new regressions" when putting out a new release. |
|
@WalterBright Thinking about it some more, I would actually love to stick this is before the release, as it's a critical wrong-code bug IMO and very important for DDMD. Anyone else with me? |
|
Ok, this looks good and solve my wrong-code problems on linux64. I'll pull it in the next day or so unless there are objections. |
|
Auto-merge toggled on |
Relax isPOD rules so ctors don't make structs non-POD
Relax isPOD rules so ctors don't make structs non-POD
I was scratching my head at this for sometime as initially it seemed that C++ had two conflicting standards.
However it seems quite clear that a POD Aggregate must not have user-defined constructors (aggregate being any non-scalar and non-vector type, eg: static array or a class) and a POD Struct may have a user-defined constructor - though it does not say this in writing, it only says what a POD Struct should not have. That being no destructors, copy constructors or assignment operators.
To still be compatible with C++, non-PODs must be passed by hidden/invisible reference. Someone with DMD-backend knowledge will have to check this is the case.