On Saturday, September 07, 2013 10:00:05 Walter Bright wrote: > Outlining of member functions is the practice of placing the declaration of > a member function in the struct/class/union, and placing the definition of > it at global scope in the module or even in another module. > > http://wiki.dlang.org/DIP47
I confess that I really don't like this idea. I think that the separation of declarations and definitions is a serious downside of C++ and that it negatively impacts code maintenence. And from the recent discussion on this, it's clear that quite a few people agree with me. However, at the same time, there are some folks (like Manu) who really prefer to separate the declaration and definitions so that they can just see the signatures for an entire class' functions at once without seeing any definitions. Personally, I don't think that that's a big deal and that it's far better to just use generated documentation for that, but clearly there's not a consensus on that. If this DIP is implemented, I do not expect to ever use it, and I hope to never have to deal with code that does (which is ultimately the main reason why I think that it would be a problem if this were implemented - eventually, I'll have to deal with code that uses it even though I think that it harms code maintainibility). But at the same time, I don't know that the fact that quite a few of this really don't like this paradigm is enough a reason to deny it to those who seem to think that it's of value. If I had to vote though, I'd vote against this, because I think that it's a bad paradigm, and I don't want to deal with it. On an implementation note, I don't think that #5 is strong enough. I think that it should be an outright error if there is a difference between the declaration and definition rather than giving one precedence over the other. I'd also be inclined to argue that #3 should be thrown out and that parameters should be required to match, but it's unfortunately not all that uncommon in C++ for folks to not even give parameters names in their declarations, so requiring that the parameters match is probably too much, much as I think that that they should be required to. - Jonathan M Davis