MISRA rule 14-5-2 says:
A copy constructor shall be declared when there is a template constructor with a single parameter that is a generic parameter.
I can't find anything that explains to me in simple enough terms why there must be a copy constructor in such a case.
I've looked at Copy constructor of template class and C++ Template constructor, why is copy constructor being called?, but neither really helped me. I see mention that a copy constructor wouldn't exist, but doesn't the default one still get created? I saw references to copy elision, but I don't understand why the copy constructor is necessary for it.
As far as I can tell, this could fall under "good programming practice to watch out for"... or it could be "you've just entered into undefined behavior land". What should I look for to determine if the code that is violating this MISRA rule is causing a risk in its current code base?