use std::forward and std::move in non-constexpr contexts