#ifndef SUM_HPP #define SUM_HPP template auto sum(IT begin_it, IT end_it) -> decltype(*begin_it + *begin_it++) { using T = decltype(*begin_it + *begin_it++); T sum{}; while (begin_it != end_it) { sum += *begin_it++; } return sum; } #endif