@@ -879,6 +879,10 @@ template<typename MemberType>
879
879
inline void optional ( const JsonObject &jo, const bool was_loaded, const std::string_view name,
880
880
MemberType &member )
881
881
{
882
+ if ( !was_loaded ) {
883
+ warn_disabled_feature ( jo, " relative" , name, " no copy-from" );
884
+ warn_disabled_feature ( jo, " proportional" , name, " no copy-from" );
885
+ }
882
886
if ( !jo.read ( name, member ) && !handle_proportional ( jo, name, member ) &&
883
887
!handle_relative ( jo, name, member ) ) {
884
888
if ( !was_loaded ) {
@@ -903,6 +907,10 @@ template<typename MemberType, typename DefaultType = MemberType,
903
907
inline void optional ( const JsonObject &jo, const bool was_loaded, const std::string_view name,
904
908
MemberType &member, const DefaultType &default_value )
905
909
{
910
+ if ( !was_loaded ) {
911
+ warn_disabled_feature ( jo, " relative" , name, " no copy-from" );
912
+ warn_disabled_feature ( jo, " proportional" , name, " no copy-from" );
913
+ }
906
914
if ( !jo.read ( name, member ) && !handle_proportional ( jo, name, member ) &&
907
915
!handle_relative ( jo, name, member ) ) {
908
916
if ( !was_loaded ) {
@@ -1493,14 +1501,20 @@ class generic_typed_reader
1493
1501
template < typename C, std::enable_if_t < !reader_detail::handler<C>::is_container,
1494
1502
int > = 0 >
1495
1503
bool operator ()( const JsonObject &jo, const std::string_view member_name,
1496
- C &member, bool /* was_loaded*/ ) const {
1504
+ C &member, bool was_loaded ) const {
1497
1505
const Derived &derived = static_cast <const Derived &>( *this );
1498
1506
// or no handler for the container
1499
1507
warn_disabled_feature ( jo, " extend" , member_name, " not container" );
1500
1508
warn_disabled_feature ( jo, " delete" , member_name, " not container" );
1509
+ if ( !was_loaded ) {
1510
+ warn_disabled_feature ( jo, " relative" , member_name, " no copy-from" );
1511
+ warn_disabled_feature ( jo, " proportional" , member_name, " no copy-from" );
1512
+ }
1501
1513
return derived.read_normal ( jo, member_name, member ) ||
1502
- handle_proportional ( jo, member_name, member ) || // not every reader uses proportional
1503
- derived.do_relative ( jo, member_name, member ); // readers can override relative handling
1514
+ // not every reader handles proportional
1515
+ handle_proportional ( jo, member_name, member ) ||
1516
+ // readers can override relative handling
1517
+ derived.do_relative ( jo, member_name, member );
1504
1518
}
1505
1519
};
1506
1520
0 commit comments