Enable OwningRewritePatternList insert overload with parameter pack only when
there is at least one template pattern type

Also remove the other insert overload with pattern pointer as there are no existing users nor any potential known use-case.

PiperOrigin-RevId: 266842920
diff --git a/include/mlir/IR/PatternMatch.h b/include/mlir/IR/PatternMatch.h
index b531a61..f3ed316 100644
--- a/include/mlir/IR/PatternMatch.h
+++ b/include/mlir/IR/PatternMatch.h
@@ -408,13 +408,12 @@
   // Pattern Insertion
   //===--------------------------------------------------------------------===//
 
-  void insert(RewritePattern *pattern) { patterns.emplace_back(pattern); }
-
   /// Add an instance of each of the pattern types 'Ts' to the pattern list with
   /// the given arguments.
-  // Note: ConstructorArg is necessary here to separate the two variadic lists.
+  /// Note: ConstructorArg is necessary here to separate the two variadic lists.
   template <typename... Ts, typename ConstructorArg,
-            typename... ConstructorArgs>
+            typename... ConstructorArgs,
+            typename = std::enable_if_t<sizeof...(Ts) != 0>>
   void insert(ConstructorArg &&arg, ConstructorArgs &&... args) {
     // The following expands a call to emplace_back for each of the pattern
     // types 'Ts'. This magic is necessary due to a limitation in the places