The template functions avro::encode() and avro::decode along with codec_traits has a clean way of encoding and decoding built-in C++ types corresponding to Avro types and types generated by the code generator. However, encoding and decoding GenricDatum is clunky. It uses std::pair and schema objects make makes it hard for programmers to grasp and use. Added complexity is due to use of reference in pair.
The forthcoming patch simplifies this and makes things uniform.