| 86 | |
| 87 | template <size_t I, class T> |
| 88 | void LoadAlternativeIf(IInputStream* in, TMemoryPool& pool, T& variant, size_t i) { |
| 89 | if (i == I) { |
| 90 | auto& x = variant.template emplace<I>(); |
| 91 | if constexpr (std::is_same_v<decltype(x), TStringBuf&>) { |
| 92 | ::LoadStr(in, x, pool); |
| 93 | } else { |
| 94 | ::Load(in, x, pool); |
| 95 | } |
| 96 | } |
| 97 | } |
| 98 | |
| 99 | template <class T, size_t... Is> |
| 100 | void LoadVariant(IInputStream* in, TMemoryPool& pool, T& variant, std::index_sequence<Is...>) { |