+ 1

Template specialisation error

I am trying to specialize a template for void, but I keep getting the error: template-id does not match any template declaration, how can I fix it? https://code.sololearn.com/c6fK2GLbOdLq/?ref=app

2nd Oct 2022, 10:59 AM
Edward Finkelstein
Edward Finkelstein - avatar
4 Answers
+ 6
Due to the 'template<>' on line 45, the compiler thinks you are referring to a template function 'processOwnPointer'. Removing the 'template<>' fixes the problem and the compiler is able to identify the method. https://code.sololearn.com/cmfI0LEOU8xu/?ref=app The problem that now arises is that you have already specified Widget::processOwnPointer as 'not deleted' on line 33. So now you can't assign it as deleted now. You could remove the specialization of Widget on line 27, which would fix this problem. But that would lead to another error when Widget is instantiated on line 65, because you would be using 'new' with a 'void*' https://code.sololearn.com/cIs1Ap5e2mL8/?ref=app Only way to have no error is to assign Widget::processOwnPointer as deleted inside the Widget specialization https://code.sololearn.com/cnh48CX7gPC0/?ref=app
3rd Oct 2022, 3:17 AM
XXX
XXX - avatar
+ 3
I can't click the link in your post. Is it a link to your code (because I don't recognize the URI)? If it is, can you post it in a comment since maybe it will be clickable from there, or post a different link to it?
2nd Oct 2022, 8:24 PM
XXX
XXX - avatar
+ 2
[user id=16537801]XXX[/user] Thank you! So that’s how it works for deleted functions in template specializations, Scott Meyers didn’t discuss that, so I was scratching my head for days on this. Thanks again!
3rd Oct 2022, 10:55 AM
Edward Finkelstein
Edward Finkelstein - avatar
0
XXX, yeah sorry about that! I just updated it
2nd Oct 2022, 9:04 PM
Edward Finkelstein
Edward Finkelstein - avatar