<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/107175>107175</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [C++23] Redefinition in special cases
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          PolarLinda6
      </td>
    </tr>
</table>

<pre>
    ```cpp
#include <print>

template<typename>
struct define_f {
  friend void f() {}
};

template<auto = [] {}>
struct A {};

struct B {
 template<typename T>
  consteval void func() {
    [[maybe_unused]] define_f<T> _{};
  }
} obj;

auto main() -> int {
 obj.func<decltype(A{})>();
  std::print(" ");
}
```

#### error message:

```txt
<source>:5:15: error: redefinition of 'f'
 5 |   friend void f() {}
      |               ^
<source>:14:34: note: in instantiation of template class 'define_f<A<(lambda at <source>:8:17){}>>' requested here
   14 |     [[maybe_unused]] define_f<T> _{};
      | ^
<source>:19:7: note: in instantiation of function template specialization 'B::func<A<(lambda at <source>:8:17){}>>' requested here
 19 |   obj.func<decltype(A{})>();
      |       ^
<source>:5:15: note: previous definition is here
    5 |   friend void f() {}
      | 
```

#### Additional Information:

Version: clang version 18.1.8
compilation parameter: -std=c++23
Link: [godbolt](https://godbolt.org/z/bzKT1ae7K)

PS: The code compiles successfully on gcc and msvc.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU9v47YT_TTjyyCGRFqRddBBttfAD7uHxa9BrwFFjW2mFKmSlNHk0xfUH0cxNthiW0OgCc5w5r3HR0l4r86GqIRsB9lhJfpwsa78brVw35RpxOOqts1rCY_J-Miug-QASQWMKyN13xAC33dOmQD8yxQbxkBtp0Ug4Pvw2pERLd0yfHC9DNjQSRl6PiHkuzGAeHKKTINXqxo8AdsCK4ZwfpiK5wfgu08aiT5YBH7Akc-88a5tdVv_UGeK7hZofsABn27lEKU1PtBV6Alvb-QC8pSEI5pdK15reu5N76mB7BDxzQIA38ey-HwHDHHJG239cod5INwKZaa2D7GKMmHR39Yv6wEY3zckdeQBbFtNnVgR6QybF119aIBXwKvxYGOYITC2zHpHNptjCQwYvz1IzlmHLXkvzhQLLxPn3eGvMK3wvbe9k4NdeJUBr9I4jGXixNEgnArKGrQnBJafgOUT-gwh3-PPnYTDb8xd_iD78kMg6QZ4xeOAxkZPVKgMKuODMEGJGczsGZRaeB-xLU451gS21aKtG4Ei4F2PbeyTR5lvzo3Hk6OjP3vygRq8kKMbgXRzI_AvTDbr8CnzAniV_4x4NNkwvyngO5JKaPU25gDLd6OtJj_-t2qkxaTFrzj-oxU-E-Ldi7MQnaOrsr3HhSOV_3hIv-DIf3qzqqYZegqN_zMn69pB6bsr9js5P65GT5ozXscFTLfrdL0dk6RtO6XHg-qEEy0FGi7bw_AyOEhgO2A7xsf0b8r8EaOQ7c62qa0O0W1sewmh87E_OwI7TqG1dWdgxzdgx_rt61MqKP8a5V9g_P5brPZ0IZS2iUNEQx59LyV5f-q1fkVr8CwlCtNg669yvWpK3hS8ECsq05xlmzQv0mJ1KTmdTiyRIiXJ4yzLWc4SLorHOs2bQq5UyRK2SYpkk7BNlhbrmm8btq05S1KRJTWHTUKtUHqt9bWN-FfK-57KNMnTPFtpUZP282fTlTHroe7PHjaJVj74931BBT18YPc3BbMD_n_5ClNmvioohSe_6p0u75RU4dLXa2lbYMdYe_p76Jx9IRmAHQeAHthxwngt2d8BAAD__zh7NEM">