================ @@ -51,13 +51,13 @@ static std::optional<StringRef> extractMdStringValue(MDNode *Node, return NodeText->getString(); } -static Expected<dxbc::ShaderVisibility> -extractShaderVisibility(MDNode *Node, unsigned int OpId) { +template <typename T, std::enable_if_t<std::is_enum_v<T>, int> = 0> ---------------- bogner wrote:
You can simplify this slightly by just using a type for the second template parameter: ```c++ template <typename T, typename = std::enable_if_t<std::is_enum_v<T>>> ``` This is example #5 in https://en.cppreference.com/w/cpp/types/enable_if.html, and note that it does not run afoul of the warning in the notes there, since we're not trying to overload this template. That said, I think we should also constrain this a bit more tightly since we're hardcoding that we read a `uint32_t` here - we can make the condition check that the underlying type is indeed `uint32_t`: ```c++ template <typename T, typename = std::enable_if_t< std::is_enum_v<T> && std::is_same_v<std::underlying_type_t<T>, uint32_t>>> ``` https://github.com/llvm/llvm-project/pull/154631 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits