I can't see the benefit of the grouping brought by "can_read_multiple_v" in read.hpp. Ultimately, everything is forwarded and called sequentially via "read_single_t". Why not simplify the process and directly call “read_single_t” for each argument of the read interface?