DefaultValuedAttr<StrAttr, ""> and ConstantAttr<StrAttr, "">
result in bugs in which TableGen will not recognize that the attribute
has a default value, because "" is an empty TableGen string.
Strings no longer have special treatment. Instead, string values must be
wrapped in quotes: "\"foo\"". Two helpers, DefaultValuedStrAttr and
ConstantStrAttr have been added to keep code clean.
Why the cpp prefix?