Q:

C++ class "cannot be shared between ARC and non-ARC code…"

Compiling Objective-C++, I get the following diagnostic:
'MyClass' cannot be shared between ARC and non-ARC code; add a non-trivial copy assignment operator to make it ABI-compatible

Similar errors come up for missing copy-constructors and destructors. It's easy enough to add the necessary methods, but often they aren't meaningful, particularly for classes that I want to make non-copyable, and I don't mix ARC and non-ARC code (not intentionally, at least).
Why am I getting this message, and can I get rid of it without writing pointless member functions for all my C++ classes?

A:

It is because ARC discourages Objective-C objects in POD structures and C++ classes due to the fact that their inclusion makes managing their memory ambiguous.  You can resolve it by prefixing Objective-C members with the __unsafe_unretained qualifier, which tells ARC to keep it's sticky fingers off the class, but puts you in the awkward position of having to manage the memory of the member object yourself.  Also, objects with internal linkage are not covered under the warning, so wrapping your class or struct in an unqualified namespace { } works as well.  If you absolutely must use ARC in the file (or files) that happen to have Objective-C Objects as class members, you must provide the proper access operators (as the warning says), otherwise just turn ARC off and save yourself the trouble.

