c++11: NULL --> nullptr
c++11: typename::iterator --> auto (step1)
type::iterator --> auto (step2)
c++11: type::iterator --> auto (step 3)