https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104111
--- Comment #10 from W E Brown <webrown.cpp at gmail dot com> --- (In reply to Eric Estievenart from comment #9) Sorry, but I find neither "weirdness" nor "spooky"-ness in the comment #9 code as shown. Rather, I believe it to be simply an example of a program that the C++ standard would describe as "ill-formed, no diagnostic required." A common, yet incorrect expectation that template instantiation somehow mirrors function call semantics seems to me to lie at the heart of the misunderstanding. Hypothetically, if the above program were to be well-formed, the compiler would need to instantiate the member template twice *with identical template arguments* in order to obtain the expected two different outcomes. However, I recall no specification, in the C++ standard, that requires such (relatively expensive!) duplication of compiler effort: once a template has been instantiated, the compiler seems fully entitled, say, to cache the result of that instantiation and reuse that outcome as may be needed during the remainder of that TU's compilation. Put another way, defining the same function in two different ways (one instantiation as deleted, one not) seems to be a form of ODR violation. Perhaps the OP is also a manifestation of a similar misunderstanding; I've not checked. If so, I would respectfully recommend this PR be closed as invalid.