| 114 | |
| 115 | template <class TSource, class TCont> |
| 116 | void ReadVectorOfPOD(TSource & src, TCont & v) |
| 117 | { |
| 118 | typedef typename TCont::value_type ValueT; |
| 119 | /// This assert fails on std::pair<int, int> and OsmID class because std::pair is not trivially copyable: |
| 120 | /// std::pair has a non-trivial copy-assignment and move-assignment operator. |
| 121 | // static_assert(std::is_trivially_copyable_v<ValueT>); |
| 122 | |
| 123 | uint32_t const count = ReadVarUint<uint32_t>(src); |
| 124 | if (count > 0) |
| 125 | { |
| 126 | v.resize(count); |
| 127 | src.Read(&v[0], count * sizeof(ValueT)); |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | template <class TSink, class TCont> |
| 132 | void WriteVectorOfPOD(TSink & sink, TCont const & v) |