|struct||NameIndexConcept< MultiAttribute< std::string > >|
The concept classes are used to simplify NodeImpl.
Since different types of avro types carry different attributes, such as names, or field names for record members. Using the concept class of NoAttribute vs Attribute, the NodeImpl object can enable/disable the attribute, but the code is the same in either case.
Furthermore, attributes may have different types, for example, most attributes are strings, but fixed types have a size attribute, which is integer.
Since compound types are composed of other types, the leaf attribute concepts extend a NodeImpl to include leaf nodes, and attributes for leaf nodes, which are used to build parse trees.