iterator: use std::move for perfect forwarding