diff --git a/sstables/sstables.cc b/sstables/sstables.cc index e9b5634296..abcc5b367b 100644 --- a/sstables/sstables.cc +++ b/sstables/sstables.cc @@ -92,14 +92,20 @@ static void check_buf_size(temporary_buffer& buf, size_t expected) { } // Base parser, parses an integer type +template +typename std::enable_if_t::value, void> +read_integer(temporary_buffer& buf, T& i) { + auto *nr = reinterpret_cast *>(buf.get()); + i = net::ntoh(*nr); +} + template typename std::enable_if_t::value, future<>> parse(file_input_stream& in, T& i) { return in.read_exactly(sizeof(T)).then([&i] (auto buf) { check_buf_size(buf, sizeof(T)); - auto *nr = reinterpret_cast *>(buf.get()); - i = net::ntoh(*nr); + read_integer(buf, i); return make_ready_future<>(); }); }