<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/67926>67926</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Out of Line Definition Error for Constrained Function of Template Class
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
matekelemen
</td>
</tr>
</table>
<pre>
Very similar to #62003, except the constraint has an extra template parameter, which is passed from the class' member type.
FYI @alexander-shaposhnikov. [Example on godbolt](https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:1,endLineNumber:16,positionColumn:1,positionLineNumber:16,selectionStartColumn:1,selectionStartLineNumber:16,startColumn:1,startLineNumber:16),source:'%0A%0Atemplate+%3Ctypename+A,+typename+T%3E%0Aconcept+constraint+%3D+true%3B%0A++++%0Atemplate+%3Ctypename+T%3E%0Astruct+Foo+%7B%0A++++struct+Bar+%7B%7D%3B%0A++++template+%3Cconstraint%3CBar%3E+U%3E%0A++++++++void+baz+(U+baz)%3B%0A%7D%3B%0A++++%0Atemplate+%3Ctypename+T%3E%0Atemplate+%3Cconstraint%3Ctypename+Foo%3CT%3E::Bar%3E+U%3E%0Avoid+Foo%3CT%3E::baz+(U+baz)+%7B%7D%0A'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:52.47813411078717,l:'4',m:100,n:'0',o:'',s:0,t:'0'),(g:!((g:!((h:compiler,i:(compiler:clang_trunk,deviceViewOpen:'1',filters:(b:'0',binary:'1',binaryObject:'1',commentOnly:'0',debugCalls:'1',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'-std%3Dc%2B%2B20',overrides:!(),selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1),l:'5',n:'0',o:'+x86-64+clang+(trunk)+(Editor+%231)',t:'0')),header:(),k:44.584286803966435,l:'4',m:50,n:'0',o:'',s:0,t:'0'),(g:!((h:output,i:(compilerName:'x86-64+gcc+12.2',editorid:1,fontScale:14,fontUsePx:'0',j:1,wrap:'1'),l:'5',n:'0',o:'Output+of+x86-64+clang+(trunk)+(Compiler+%231)',t:'0')),header:(),l:'4',m:50,n:'0',o:'',s:0,t:'0')),k:47.52186588921283,l:'3',n:'0',o:'',t:'0')),l:'2',n:'0',o:'',t:'0')),version:4).
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVk1v4zYQ_TX0hYghkfo8-GDJMVCg2BTYD6CngpJGFjcUKZCU1-6vLyjJtpQ422SxgOGEw3kzw-G8ZzJj-EECbFCYoXC3Yr1tlN60zMIzCGhBrgpVnTffQJ-x4S0XTGOrMCI0Ip5HEckxnEroLLYN4FJJYzXj0uKGGcwkhpPVDFtoO8Es4I5p1oIF7YA_Gl42mBvcMWOgwrVW7RhGMGMQiXELbQEa23MHa-TtkLcdv_d__4FR4DEBJyYr0A-mYZ0yjeTP6rjGKMweT6ztBGAl8UFVhRIWhTtEksbaziC6RWSPyH7aWit9GAz0MGz5iCSIJG8vGkS3pargseJWubPwYTepuQDJWhhWsY9IjEheK2k_l0w4qx9Mhq8G_jqNbt7o9t1tI5ILJl2uEpGQZNNXbkBAabmSYx6QVa5E38oJA7L6k0v41Lt2OVuESN4pwx1k4Xkxvna_pvhsmbYL0HLrDvQ14q5j6nZUr8upQYiE3nb4ugwIGo5Mc3fjQyNJtkUkRySbWb44l8cBVyrphg-R7DZ6U4ydA-ke3P_ZlCmbfX6edZbDWN2XLupeqdEzfh3v6pQxPXOKd_fTv8w8rz6k-RBkyJ99vRWyrP_2OSpeIZIV7N9hnXy9LNJ58jdr-UAr_qfsGWjoVUjzCUy3iG7vn2qq_h7g7omWvfXGOXKTJcahCkc6yQW51LjK56TKplEcDXRiq53j0jHyM6LbkKyDOPFp4PtenMR-fMsYjMjWTbnnvZV7XDjt8e6kyd-hN23HBczU5mqh29Kpxj9W9_IZkbyCIy_hG4cfTx3IpRhxYUGPCpgUizoLLpk-L7xH01PxHUq72ChV24K0T1KcFzEqKPpDzoQwC_cKWiYPApa-XDtVOYJZmOEEZW-XEsqlBbHwErzQTJ9zVS2DWs3bOdS1thbsYO534zdIs-CFmd2VS6g6J5bTsR6MrQY9msHIZTSOoDWv4GWAj8r9x9T-18X-vVr_Qur9dxMUkeyURA9R4BR9aPfA_2mwR_Ynl1_dK2_Tt6nbAKuGmq69dWQOgnWYBCSJEo-mURTQ8C6bw99FZsdf1duut6_Z--n6Xrie_FCWiGQ-WZOJEsOBeTU1_INT-0Oz7iUl3nEVT1O9marfdSv5VZ9-7V5-X_uvtxyvQ-InUZgkKfFJQm9Z6E9n8K2iJzD5JfARtBkZHSCSrlfVhlYpTdkKNn6URn4ch9RfNZs6IHFRVSVAVdRRzeqAhFHNwqBOaRSzZMU3xCPU9zzfj0hI_XVZkiio48AP44SkRYACD1rGxVqIY-vetituTA-bKE5JtBKsAGEuD369cU4PRX8wKPAEN9bcYJZbAZun3mJVY8dwvIOay0FS8KPWSuNaaZxfXgFQ4X0vB_FwiC-XV3_u3vOrXovNi-c3t01frEvVIrJ3Wac_D51Ww08O2Q-VG0T2Q_H_BQAA__9fC4WX">