Hi, I didn't follow the finest details of this (Jonathan will be able to provide better comments) but it's not immediately obvious to me what happens of the -1 + 1 trick when begin() == end(). In my opinion, we should not add to cpp_type_traits.h, which would become bigger even in normal-mode (in fact we would like to see it going away...) Paolo.