2009/1/11 Weed <resume...@mail.ru>: > Bill Baxter пишет: > >> But since classes can be polymorphic, value copying gets you into >> slicing problems. That's why value copying is disabled to begin with. >> So disabling value copies is a good thing. > > It is not always a good thing.
Yeh, I just mean there is some merit in disabling value copies. But I don't rule out the possibility that there may be an even better way that banning them altogether. > I propose to prohibit only the copying by value of the base type to > derivative type Ok, this is key. How do you propose to do this? In general it requires a runtime check, I think. And I think you need to say that you prohibit copying unless typeA==typeB exactly. If you allow copying either way between base and derived you are asking for trouble. But still given Base x = get_one(); Base y = get_another(); *x = *y; // presumed value copy syntax you have no way in general to know that x and y are really both a Base at compile time. So you must have a run-time check there. Perhaps it could be omitted for -release builds, though. >> And that's also the problem with putting scope'd things inside another >> class or an array. Since they don't have value semantics, > > Yes, this is what I mean So assuming you had this, the important question is what would you do with it? You still have the problem that the current system works pretty well. And has a lot of history. So you need a very compelling use case to convince Walter that something should change. --bb