I'd rather stick with std::numeric_limits::min():
std::numeric_limits has to be specialized for custom types anyways (it is one of the rare cases where users are welcomed to enter in the std namespace), and I don't see reason for exposing a different value for std::numeric_limits::min() and NumTraits::smallest()? The only advantage I see could be a clearer name (not sure smallest is really clearer though).
I know that we already have some aliases in NumTraits, but retrospectively I think this was a bad idea, it just make everything more confusing.
gael