Justin Johansson wrote:
Jeremie Pelletier Wrote:
As for the max of an empty set, you can just return zero.
Well you could return -1, 99 or any arbitrary integer for that matter; just that it
doesn't make sense to do that from a pure maths perspective. Mathematicians have spent
centuries trying to make number systems consistent. The invention (or discovery**) of
"i", the square-root of minus-one, was a major major break-through. In similar
vein, it's nice if the type systems we use for programming follow from a consistent set
of axioms. ;-)
Your return situation is what an 'optional' template is made for. The
entire idea about 'optional' is that you should be able to always return
a value for a type which is not a valid value for that type. Some other
languages use a built-in value, like 'None' in Python, to solve the
problem. C++ and D can use an 'optional' template to solve this problem.
See optional<T> in Boost for the C++ answer. I believe Andrei is working
on a similar solution for D.