Skip to content

Commit

Permalink
Optimized the statically known id of variant.
Browse files Browse the repository at this point in the history
  • Loading branch information
eyalz800 committed Dec 23, 2021
1 parent dd02681 commit d3750fa
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions zpp_bits.h
Original file line number Diff line number Diff line change
Expand Up @@ -1027,15 +1027,14 @@ class basic_out
template <typename KnownId = void>
constexpr errc serialize_one(concepts::variant auto && variant)
{
using type = std::remove_cvref_t<decltype(variant)>;

if constexpr (!std::is_void_v<KnownId>) {
return std::visit(
[this](auto & object) {
return this->serialize_one(object);
},
variant);
return serialize_one(
*std::get_if<
traits::variant<type>::template index<KnownId::value>()>(
std::addressof(variant)));
} else {
using type = std::remove_cvref_t<decltype(variant)>;

auto variant_index = variant.index();
if (std::variant_npos == variant_index) [[unlikely]] {
return std::errc::invalid_argument;
Expand Down

0 comments on commit d3750fa

Please sign in to comment.