traits comes before non-const iterator because it may not have a default in the case of VC++ [SVN r7645]