Merge pull request #1593 from AlvinMooreSr/variant-missing

Switched Variant Header
This commit is contained in:
Alvin Moore 2019-05-17 10:42:21 -07:00 committed by GitHub
commit f598d0a614
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 29 deletions

View File

@ -195,5 +195,3 @@ struct union_like_traits<std::variant<Alternatives...>> : std::true_type {
member = a;
}
};

View File

@ -26,7 +26,7 @@
#include <algorithm>
#include <iomanip>
#include <boost/variant.hpp>
#include <variant>
namespace detail {
@ -283,29 +283,10 @@ TEST_CASE("flow/FlatBuffers/serializeDeserializeMembers") {
} // namespace unit_tests
template <class... Alternatives>
struct union_like_traits<boost::variant<Alternatives...>> : std::true_type {
using Member = boost::variant<Alternatives...>;
using alternatives = pack<Alternatives...>;
static uint8_t index(const Member& variant) { return variant.which(); }
static bool empty(const Member& variant) { return false; }
template <int i>
static const index_t<i, alternatives>& get(const Member& variant) {
return boost::get<index_t<i, alternatives>>(variant);
}
template <size_t i, class Alternative>
static const void assign(Member& member, const Alternative& a) {
static_assert(std::is_same_v<index_t<i, alternatives>, Alternative>);
member = a;
}
};
namespace unit_tests {
TEST_CASE("flow/FlatBuffers/variant") {
using V = boost::variant<int, double, Nested2>;
using V = std::variant<int, double, Nested2>;
V v1;
V v2;
Arena arena;
@ -316,21 +297,21 @@ TEST_CASE("flow/FlatBuffers/variant") {
out = save_members(arena, FileIdentifier{}, v1);
// print_buffer(out, arena.get_size(out));
load_members(out, context, v2);
ASSERT(boost::get<int>(v1) == boost::get<int>(v2));
ASSERT(std::get<int>(v1) == std::get<int>(v2));
v1 = 1.0;
out = save_members(arena, FileIdentifier{}, v1);
// print_buffer(out, arena.get_size(out));
load_members(out, context, v2);
ASSERT(boost::get<double>(v1) == boost::get<double>(v2));
ASSERT(std::get<double>(v1) == std::get<double>(v2));
v1 = Nested2{ 1, { "abc", "def" }, 2 };
out = save_members(arena, FileIdentifier{}, v1);
// print_buffer(out, arena.get_size(out));
load_members(out, context, v2);
ASSERT(boost::get<Nested2>(v1).a == boost::get<Nested2>(v2).a);
ASSERT(boost::get<Nested2>(v1).b == boost::get<Nested2>(v2).b);
ASSERT(boost::get<Nested2>(v1).c == boost::get<Nested2>(v2).c);
ASSERT(std::get<Nested2>(v1).a == std::get<Nested2>(v2).a);
ASSERT(std::get<Nested2>(v1).b == std::get<Nested2>(v2).b);
ASSERT(std::get<Nested2>(v1).c == std::get<Nested2>(v2).c);
return Void();
}
@ -404,7 +385,7 @@ struct Y1 {
struct Y2 {
int a;
boost::variant<int> b;
std::variant<int> b;
template <class Archiver>
void serialize(Archiver& ar) {