diff --git a/fieldbasedtag.h b/fieldbasedtag.h index b18ad09..608e338 100644 --- a/fieldbasedtag.h +++ b/fieldbasedtag.h @@ -185,7 +185,17 @@ template inline std::vector FieldMa template inline bool FieldMapBasedTag::setValue(KnownField field, const TagValue &value) { - return setValue(fieldId(field), value); + const auto id = fieldId(field); + if constexpr (std::is_arithmetic_v) { + if (!id) { + return false; + } + } else { + if (id.empty()) { + return false; + } + } + return setValue(id, value); } /*! @@ -266,7 +276,17 @@ bool FieldMapBasedTag::setValues(const IdentifierType &id, c */ template bool FieldMapBasedTag::setValues(KnownField field, const std::vector &values) { - return setValues(fieldId(field), values); + const auto id = fieldId(field); + if constexpr (std::is_arithmetic_v) { + if (!id) { + return false; + } + } else { + if (id.empty()) { + return false; + } + } + return setValues(id, values); } template inline bool FieldMapBasedTag::hasField(KnownField field) const