I have an iteration helper like this:
template <typename T, typename Op>
void for_each(T* a, size_t n, Op op) {
for (size_t i = 0; i < n; i++) {
a[i] = op(a[i], i);
}
}
I'd like it to be able usable with or without the i
argument to op
:
// float* a;
for_each(a, n, [](const float& v) { return v + 1; });
for_each(a, n, [](const float& v, const size_t& i) { return v + i; });
Is there a way to do this with C++14 or earlier?
Note: I don't have the option of using (const float& v, size_t) { }
to ignore the second arg, nor the option of changing the op
signature to std::pair<T, size_t>
or similar.
Aucun commentaire:
Enregistrer un commentaire