@@ -1363,14 +1363,26 @@ namespace glz
1363
1363
1364
1364
using WriterType = meta_unknown_write_t <ValueType>;
1365
1365
if constexpr (std::is_member_object_pointer_v<WriterType>) {
1366
- // TODO: This intermediate is added to get GCC 14 to build
1367
- decltype (auto ) merged = glz::merge{value, value.*writer};
1368
- write <JSON>::op<disable_write_unknown_on<Options>()>(std::move (merged), ctx, b, ix);
1366
+ decltype (auto ) unknown_writer = value.*writer;
1367
+ if (unknown_writer.size () > 0 ) {
1368
+ // TODO: This intermediate is added to get GCC 14 to build
1369
+ decltype (auto ) merged = glz::merge{value, unknown_writer};
1370
+ write <JSON>::op<disable_write_unknown_on<Options>()>(std::move (merged), ctx, b, ix);
1371
+ }
1372
+ else {
1373
+ write <JSON>::op<disable_write_unknown_on<Options>()>(value, ctx, b, ix);
1374
+ }
1369
1375
}
1370
1376
else if constexpr (std::is_member_function_pointer_v<WriterType>) {
1371
- // TODO: This intermediate is added to get GCC 14 to build
1372
- decltype (auto ) merged = glz::merge{value, (value.*writer)()};
1373
- write <JSON>::op<disable_write_unknown_on<Options>()>(std::move (merged), ctx, b, ix);
1377
+ decltype (auto ) unknown_writer = (value.*writer)();
1378
+ if (unknown_writer.size () > 0 ) {
1379
+ // TODO: This intermediate is added to get GCC 14 to build
1380
+ decltype (auto ) merged = glz::merge{value, unknown_writer};
1381
+ write <JSON>::op<disable_write_unknown_on<Options>()>(std::move (merged), ctx, b, ix);
1382
+ }
1383
+ else {
1384
+ write <JSON>::op<disable_write_unknown_on<Options>()>(value, ctx, b, ix);
1385
+ }
1374
1386
}
1375
1387
else {
1376
1388
static_assert (false_v<T>, " unknown_write type not handled" );
0 commit comments