| 43 | */ |
| 44 | template <typename T, typename BaseType, typename UnaryOp> |
| 45 | auto Join(const std::vector<T>& list, const BaseType& separator, UnaryOp unary_op) |
| 46 | -> decltype(unary_op(list.at(0))) |
| 47 | { |
| 48 | decltype(unary_op(list.at(0))) ret; |
| 49 | for (size_t i = 0; i < list.size(); ++i) { |
| 50 | if (i > 0) ret += separator; |
| 51 | ret += unary_op(list.at(i)); |
| 52 | } |
| 53 | return ret; |
| 54 | } |
| 55 | |
| 56 | template <typename T> |
| 57 | T Join(const std::vector<T>& list, const T& separator) |