diff --git a/llvm/include/llvm/Support/YAMLTraits.h b/llvm/include/llvm/Support/YAMLTraits.h index e707a445012b5..913d927b6ee63 100644 --- a/llvm/include/llvm/Support/YAMLTraits.h +++ b/llvm/include/llvm/Support/YAMLTraits.h @@ -901,11 +901,12 @@ class IO { } template - std::enable_if_t::value, void> - mapOptionalWithContext(const char *Key, T &Val, Context &Ctx) { - // omit key/value instead of outputting empty sequence - if (this->canElideEmptySequence() && !(Val.begin() != Val.end())) - return; + void mapOptionalWithContext(const char *Key, T &Val, Context &Ctx) { + if constexpr (has_SequenceTraits::value) { + // omit key/value instead of outputting empty sequence + if (this->canElideEmptySequence() && Val.begin() == Val.end()) + return; + } this->processKey(Key, Val, false, Ctx); } @@ -916,12 +917,6 @@ class IO { /*Required=*/false, Ctx); } - template - std::enable_if_t::value, void> - mapOptionalWithContext(const char *Key, T &Val, Context &Ctx) { - this->processKey(Key, Val, false, Ctx); - } - template void mapOptionalWithContext(const char *Key, T &Val, const DefaultT &Default, Context &Ctx) {