[clang-tools-extra] [clang-tidy] Add new check: `readability-redundant-typename` (PR #161574)

Baranov Victor via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 1 13:33:30 PDT 2025


================
@@ -0,0 +1,26 @@
+.. title:: clang-tidy - readability-redundant-typename
+
+readability-redundant-typename
+==============================
+
+Finds unnecessary uses of the ``typename`` keyword.
+
+``typename`` is unnecessary in two cases. First, before non-dependent names:
+
+.. code-block:: c++
+
+  /* typename */ std::vector<int>::size_type size;
+
+And second, since C++20, before dependent names that appear in a context
+where only a type is allowed (the following example shows just a few of them):
+
+.. code-block:: c++
+
+  template <typename T>
+  using trait = /* typename */ T::type;
+
+  template <typename T>
+  struct S {
+    /* typename */ T::type variable;
+    /* typename */ T::type function(/* typename */ T::type);
+  };
----------------
vbvictor wrote:

I think it would be great to add small examples of all cases where the check would remove `typename`.
Those would be cases listed in "3.2 Patterns that Remove typename" in the paper or simply from your tests

https://github.com/llvm/llvm-project/pull/161574


More information about the cfe-commits mailing list