Note that you can replace the standard allocator with a garbage collector in C and C++ if you like that. A well known, and relatively well-behaved one is the Boehm GC: https://www.hboehm.info/gc/
It makes a good attempt at reclaiming most garbage in programs that match its limitations.
Scarcely general purpose.
I've not seen it fail in any significant way. A number of programming languages use Boehm as their GC -- and many others *should*.
I mostly agree with that. If someone is claiming the Boehm GC is flawed, please at least give details, and accurate facts and figures about it. It has been widely used indeed.
Hans Boehm was completely open about what it couldn't do. Apply those to arbitrary programs composed of components (e.g. libraries!) produced by people not working together. Then try to ensure correct operation.
If there is a strict control of all code in a particular environment (e.g. Apple's) then it becomes less intractible - although still difficult and somewhat limited.
So you're basically saying that all projects in which it has worked well must fall into this category. Maybe so.
No I'm not saying that. If I say that all crows are black birds, it does not mean I say all black birds are crows.
As Nominal Animal suggested, there are still many cases (obviously not ALL) in which just using it as a drop-in for malloc() mostly gives benefits without noticeable problems.
The keywords there are "mostly" and "noticeable".
As Tony Hoare memorably put it "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult."
It is obvious which category a product made with Boehm's GC falls into.
It should certainly be tested with care, though.
Remember the old engineering adage: "you can't test/inspect quality into a product". Why is it that too much of the software industry doesn't comprehend that tests cannot show the absence of bugs, they can only show the presence of specific bugs?
Another point, which may be part of what you are saying, is that ideally you must have access to ALL source code and recompile everything using the Boehm GC. I know there are ways to just kind of redirect malloc() calls at the executable level, but I would certainly suggest NOT doing this. Way too slippery.
Absolutely. That is not practical for many reasons.
But with your claims, it would have been nice to have more details on the exact limitations and how "difficult" it is to use properly. As it is, it's like we'll have to take your word for it.
Do not take my word for it! Read the literature to understand what the creator (and others more knowledgeable than me) have said. I'm not going to repeat it poorly!
I absolutely don't think it's perfect, but it would have been interesting to have more detailed information if anyone is interested in possibly using a GC with C or C++. (All the more that there are other options, just the this one is one of the most popular.)
Popularity is irrelevant.
If I'm allowed to create a product that doesn't work, I can do it in 10 minutes flat.
Now in the general sense, any allocator that is an integral part of a given language, rather than a third-party addition, is more likely to be more robust, easier to use, and more consistent. No real doubt about that, and if this is what you implied beyond the very case of the Boehm GC, then that's something to consider.
I will try to stop people using inappropriate tools when more appropriate tools are available. Familiarity with an inappropriate tool is not a valid reason for using it.
For example, I've seen people open tin cans with scissors

...
We can also note that depending on the language you use, you may not have a choice. Some languages rely on GC and don't give you alternatives for dynamic allocation. For people using such a language, whether they consider GC a silver bullet or not doesn't matter - they just have to do with it.
That doesn't mean it is sensible, nor appropriate, nor correct.
Example. I've seen somebody that needed to get a value from one unix process to another running on a different processor. Since he only knew SQL he just had to use that. Yes, his solution was the first process updated a database table, and the second process polled the database table (using SQL SELECT) to spot changes.
Sane people would just have started with TCP/IP, not SQL!