| 98 | |
| 99 | template <class T, size_t... Is> |
| 100 | void LoadVariant(IInputStream* in, TMemoryPool& pool, T& variant, std::index_sequence<Is...>) { |
| 101 | i8 tag = 0; |
| 102 | ::Load(in, tag); |
| 103 | |
| 104 | Y_ENSURE_EX(tag >= 0 && size_t(tag) < std::variant_size_v<T>, TSerializeException() << "Invalid variant tag: " << tag); |
| 105 | (LoadAlternativeIf<Is>(in, pool, variant, tag), ...); |
| 106 | } |
| 107 | |
| 108 | template <class T> |
| 109 | void LoadVariant(IInputStream* in, TMemoryPool& pool, T& variant) { |
no test coverage detected