> various arguments. Please don't bring this up again. Thank you. I won't, but this is because I made that decision minutes ago.
> > Well, (almost) enough for now. I also maintain that unsigned types > > should throw out-of-range exceptions (in debug mode, so that release > > will run as fast as it gets) when decremented below zero, unless > > specifically marked as *circular* (i.e. intended behavior) or > > something like this. This will prevent some bugs. I see those quite > > often in my student's homeworks. > Safe on top of flexible is the best design. If there is anything > preventing you from defining a type with the behavior you mention, you > may want to file a bug. type information will disappear after compilation. defining a class over unsigned int (and overloading operators) on top of that will be way too much overhead. in fact, this is what compiler would do for the debug type. to not break the existing code: define "uncircular" types that will throw that exception. this could be implemented as a @keyword, since is more like a annotation.