use value instead of index in construct_counter to make sure the
movable_initializer_list will not reorder objects