================
@@ -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

Reply via email to