fixed bad union get

fb-schema
keldu 2021-12-24 23:17:57 +01:00
parent d92386119a
commit 8a415831b7
1 changed files with 7 additions and 1 deletions

View File

@ -89,7 +89,13 @@ public:
using ElementType = typename MessageParameterPackType<
i, Message<V, MessageContainer<V>>...>::Type;
template <size_t i> ElementType<i> &get() { return std::get<i>(value); }
template <size_t i> ElementType<i> &get() {
if (i != value.index()) {
using MessageIV = typename MessageParameterPackType<i, V...>::Type;
value = Message<MessageIV, MessageContainer<MessageIV>>{};
}
return std::get<i>(value);
}
size_t index() const noexcept { return value.index(); }
};