diff --git a/include/rfl/internal/is_default_val_v.hpp b/include/rfl/internal/is_default_val_v.hpp index 98977549..d0811eb5 100644 --- a/include/rfl/internal/is_default_val_v.hpp +++ b/include/rfl/internal/is_default_val_v.hpp @@ -4,6 +4,8 @@ #include #include "../DefaultVal.hpp" +#include "../Rename.hpp" +#include "StringLiteral.hpp" namespace rfl::internal { @@ -16,6 +18,10 @@ class is_default_val : public std::false_type {}; template class is_default_val> : public std::true_type {}; +template +class is_default_val>> : public std::true_type { +}; + template constexpr bool is_default_val_v = is_default_val>>::value; diff --git a/tests/json/test_default_val.cpp b/tests/json/test_default_val.cpp index 1039746e..9ef09671 100644 --- a/tests/json/test_default_val.cpp +++ b/tests/json/test_default_val.cpp @@ -10,6 +10,7 @@ struct Person { std::string first_name; rfl::DefaultVal last_name = "Simpson"; rfl::DefaultVal town; + rfl::Rename<"country", rfl::DefaultVal> home_country = "USA"; }; TEST(json, test_default_val) { @@ -28,9 +29,10 @@ TEST(json, test_default_val) { EXPECT_EQ(homer.first_name, "Homer"); EXPECT_EQ(homer.last_name.value(), "Simpson"); EXPECT_EQ(homer.town.value(), ""); + EXPECT_EQ(homer.home_country().value(), "USA"); write_and_read( Person{"Waylon", "Smith", "Springfield"}, - R"({"first_name":"Waylon","last_name":"Smith","town":"Springfield"})"); + R"({"first_name":"Waylon","last_name":"Smith","town":"Springfield","country":"USA"})"); } } // namespace test_default_val