#include <ostream>
#include <bitset>
+#include <type_traits>
#include "include/types.h"
#include "include/interval_set.h"
#include "include/utime.h"
}
}
- int map(uint64_t x_off, uint64_t x_len,
- std::function<int(uint64_t,uint64_t)> f) const {
+ template<class F>
+ int map(uint64_t x_off, uint64_t x_len, F&& f) const {
+ static_assert(std::is_invocable_r_v<int, F, uint64_t, uint64_t>);
+
auto p = extents.begin();
assert(p != extents.end());
while (x_off >= p->length) {
}
return 0;
}
+ template<class F>
void map_bl(uint64_t x_off,
bufferlist& bl,
- std::function<void(uint64_t,bufferlist&)> f) const {
+ F&& f) const {
+ static_assert(std::is_invocable_v<F, uint64_t, bufferlist&>);
+
auto p = extents.begin();
assert(p != extents.end());
while (x_off >= p->length) {