why static_cast? `id` can be size_t.