On Jan 9, 2008 6:55 AM, Tobias Schwinger
Stjepan Rajko wrote:
* What is your evaluation of the design?
A default case function object returning 'void' should be assumed (and 'assert'ed) not to return in a context where a (non-void) result is expected (implementation hint: the built-in comma operator allows void arguments and an overloaded comma operator doesn't).
I can see why having a non-returning default case function object would be a common use case (e.g., throw on non-specified case), but technically, why should the default case be treated differently than the regular cases in this respect? E.g., what if I wanted to throw on case 3 but return something by default? It seems that the cleanest solutions here would be to either allow void-returning function objects (when a return type is expected) both for regular and default cases (and assert that the call does not return), or disallow the void-returning function objects all together (when a return type is expected). Just my 2 cents... Regards, Stjepan