I have, but at least for me it seemed to cause more problems than it solved. Using GC with C++ basically makes it much more like other languages that use GC -- in particular, you lose the deterministic destruction of objects that's (more or less) necessary for RAII to work correctly. This, in turn, means that when (for example) you want to destroy something deterministically, you need to do so explicitly like you do in something like Java. IMO, that's somewhat clumsy in Java -- but much more so in C++, since it lacks a
finally clause for the purpose.
Under normal circumstances, you can use a dtor and RAII to provide all the capabilities of a
finally clause, but the whole problem here is that with GC you no longer get that. That means almost any time you want to destroy something deterministically, you need to do so explicitly and throw (pun noted by not intended) in extra
catch clauses to ensure that it happens no matter how you exit the area where you needed the resource.
In the end, it comes down to one thing: at least for me, GC accomplishes next to nothing, because intelligent use of container classes has basically eliminated memory management problems without it. RAII allows me to manage memory and virtually all other resources cleanly. Using GC means 1) the memory isn't managed as well (memory footprint is generally considerably larger), and 2) I have to go back to managing other resources manually.