diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java index eac73c3af5..5d99a81f24 100755 --- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java +++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java @@ -2746,7 +2746,24 @@ private void writeTokenDisplay( case BEGIN_SET: case BEGIN_COMPOSITE: - sb.append(indent).append("builder << ").append(fieldName).append("();\n"); + if (0 == typeToken.version()) + { + sb.append(indent).append("builder << ").append(fieldName).append("();\n"); + } + else + { + new Formatter(sb).format( + indent + "if (%1$sInActingVersion())\n" + + indent + "{\n" + + indent + " builder << %1$s();\n" + + indent + "}\n" + + indent + "else\n" + + indent + "{\n" + + indent + " builder << %2$s;\n" + + indent + "}\n", + fieldName, + typeToken.signal() == Signal.BEGIN_SET ? "\"[]\"" : "\"{}\""); + } break; }