I agree. I probably wouldn't have cared for this myself, had I never seen the code I'm working on now. I mean, normally I work pretty independently. But, now I'm stuck with the job of maintaining code that's been around forever, has been ported several times to a couple different projects. In places you can see how the code evolved over time. But, the point is, it's becoming a mess. And, we're at a point where we're almost starting everything again, but this time from scratch. Knowing that the code will probably live for years, and be ported several times, and be maintained by many different people over its life, it seems best to me to start a project like that off with clarity being the #1 priority. And, at least in my experience, people seem to think that functions that pass by reference changing the values of params is a problem, it's hard to track. But, most C++ people I know prefer to avoid pointer use. So, that really only leaves the one option that makes the intent explicit and clear, every time.
So, I really can't give a long term analysis of how well this method works, if it becomes a hassle to maintain it, or not. But, as it is, it seems more clear to me than anything else. At the cost of 3 or 6 letters at the invocation point, you can make the operation of the function clear. func(out(x)); It seems pretty simple and straight forward to me. Justin ----- Original Message ----- From: "Alisdair Meredith" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, April 23, 2003 7:01 PM Subject: [boost] Re: class proposal > > "Justin M. Lewis" wrote: > > > My idea was, if you make a simple template class, originally I called > > it CRetVal, you could force people to specify at the time the function > > is called what's going on. I made a helper template function retval > > that would create and return a CRetVal object of the desired type to > > save from needing to use template notation in line all over the > > place. So, the above would become something more like. > > > void func(CRetVal<int> x){x = 1977;}; > > Interesting idea. I think I like it, similar to the way I like the idea > of an unmanaged_ptr<> template to indicate deliberate raw pointer use > clearly. > > Unfortunately, I think it is a hard sell, persuading people to type many > more characters to do something they have been familiar with using much > leaner syntax for years. If clarity matters it is usually indicated by > clear function/parameter naming, handily placed comments etc. so various > strategies for coping with the problem are out there. > > Persuading people that the increased clarity of intent for the single > parameter is worth the extra code-obfuscation of the call as a whole (as > any additional wrapper-syntax tends to obfuscate) may be a hard sell. > On the basis that nothing teaches like experience I'd certainly be > interested in giving it a go here though <g> > > -- > AlisdairM > > _______________________________________________ > Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost > _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost