-
Notifications
You must be signed in to change notification settings - Fork 15.4k
Description
I came across the portability-template-virtual-member-function check and don't really understand how the check is useful or actionable. It's not clear as a user what I'm supposed to do to "fix" the code and silence the warning.
The example in the docs shows that there's a compiler error, but that compiler error is not visible in GCC or Clang because the function is not instantiated. It is however visible in MSVC because it is instantiated.
I see two possible scenarios:
- I only ever use GCC/Clang, then I can just disable the check.
- I use both GCC/Clang and MSVC, in which case I'll get a compiler error from MSVC, prompting me to fix the compiler error (that goes unnoticed by GCC). Once I fix the compiler error, clang-tidy still complains, even though I've resolved the actual issue.
So I personally do not see the value in this check, it only bans the usage of virtual member functions in class templates. I would vote for removing it altogether, or at the very least improving the docs to show how people are supposed to fix their code to comply with the check.