[llvm] b5c6588 - [ADT] Simplify enable_if_struct_deref_supported (NFC) (#159939)

via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 20 18:41:59 PDT 2025


Author: Kazu Hirata
Date: 2025-09-20T18:41:55-07:00
New Revision: b5c658861426e01828b9f92ed767eaa1c83cb812

URL: https://github.com/llvm/llvm-project/commit/b5c658861426e01828b9f92ed767eaa1c83cb812
DIFF: https://github.com/llvm/llvm-project/commit/b5c658861426e01828b9f92ed767eaa1c83cb812.diff

LOG: [ADT] Simplify enable_if_struct_deref_supported (NFC) (#159939)

This patch simplifies enable_if_struct_deref_supported by using a
default template parameter as a temporary type alias.  This way, we do
not have to repeat decltype(...).

Added: 
    

Modified: 
    llvm/include/llvm/ADT/fallible_iterator.h

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/ADT/fallible_iterator.h b/llvm/include/llvm/ADT/fallible_iterator.h
index b42f62b67fd66..76fa054f2eb94 100644
--- a/llvm/include/llvm/ADT/fallible_iterator.h
+++ b/llvm/include/llvm/ADT/fallible_iterator.h
@@ -67,10 +67,9 @@ namespace llvm {
 /// without requiring redundant error checks.
 template <typename Underlying> class fallible_iterator {
 private:
-  template <typename T>
-  using enable_if_struct_deref_supported = std::enable_if_t<
-      !std::is_void<decltype(std::declval<T>().operator->())>::value,
-      decltype(std::declval<T>().operator->())>;
+  template <typename T, typename U = decltype(std::declval<T>().operator->())>
+  using enable_if_struct_deref_supported =
+      std::enable_if_t<!std::is_void_v<U>, U>;
 
 public:
   /// Construct a fallible iterator that *cannot* be used as an end-of-range


        


More information about the llvm-commits mailing list