diff --git a/llvm/include/llvm/Support/YAMLTraits.h b/llvm/include/llvm/Support/YAMLTraits.h index e707a445012b5..21829b906967e 100644 --- a/llvm/include/llvm/Support/YAMLTraits.h +++ b/llvm/include/llvm/Support/YAMLTraits.h @@ -1105,22 +1105,18 @@ yamlize(IO &io, T &Val, bool, Context &Ctx) { } template -std::enable_if_t::value, bool> -yamlizeMappingEnumInput(IO &io, T &Val) { - return false; -} - -template -std::enable_if_t::value, bool> -yamlizeMappingEnumInput(IO &io, T &Val) { - if (io.outputting()) - return false; +bool yamlizeMappingEnumInput(IO &io, T &Val) { + if constexpr (has_MappingEnumInputTraits::value) { + if (io.outputting()) + return false; - io.beginEnumScalar(); - MappingTraits::enumInput(io, Val); - bool Matched = !io.matchEnumFallback(); - io.endEnumScalar(); - return Matched; + io.beginEnumScalar(); + MappingTraits::enumInput(io, Val); + bool Matched = !io.matchEnumFallback(); + io.endEnumScalar(); + return Matched; + } + return false; } template