I don't have any good reference about std::numeric_limits<T>, but sites on the net says that std::numeric_limits<T>::epsilon() will return the difference between 1 and the smallest number after it. As far as I know about the int type, the next numer after 1 is 2, so epsilon should be 1. But it's 0 (Linux, g++ 4.4.5). What is the reasoning behind that?
I know that in practice epsilon() is only useful for floating point types, I'm just nitpicking.