I think you are hit by https://issues.apache.org/jira/browse/AVRO-1335
I recently extended the avrogen_cpp thing so it also generates the following members to your class. ... static inline const boost::uuids::uuid schema_hash() { static const boost::uuids::uuid _hash(boost::uuids::string_generator()("eea03bf9-7719-1af0-1dfb-e8049f677f7d")); return _hash; } static inline const char* schema_as_string() { return "{\"type\":\"record\",\"name\":\"cpx\",\"fields\":[{\"name\":\"numbername\",\"type\":\"string\"},{\"name\":\"re\",\"type\":\"double\"},{\"name\":\"im\",\"type\":\"double\"}]}"; } static const avro::ValidSchema valid_schema() { static const avro::ValidSchema _validSchema(avro::compileJsonSchemaFromString(schema_as_string())); return _validSchema; } ... As you can see the existing C++ code seems to loose the default values somewhere and this of course also makes the schema hash unusable (in my use-case) /svante