On Mon, Nov 25, 2019 at 10:53 AM David Chisnall <gnus...@theravensnest.org> wrote: > > On 25 Nov 2019, at 09:37, Gregory Casamento <greg.casame...@gmail.com> wrote: > > > > * C++, while this is not exclusive to clang, gcc doesn't support the latest > > version of C++. Clang is extraordinarily good at optimization. > > I don’t think this is true. We have a C++17 project that we test in CI with > GCC. The only times that we experience problems are when we use some > non-standard attributes that GCC doesn’t support (but we also build with > Visual Studio, so we rarely find anything that we need that those two support > but GCC doesn’t, it’s only when we have something ELF-specific that’s a > problem). > > I don’t know how good GCC’s Objective-C++ support is (as I recall, > Objective-C and Objective-C++ in GCC aren’t just base-language + Objective-*, > so it isn’t necessarily a given that you get full C++17 support in GCC’s > Objective-C++), but using C++ smart pointers you can get a lot of ARC (at the > very least - and prior to ARC support, I did - you can implement smart > pointers that manage Objective-C retain / release and use them to hold > Objective-C objects in collections.
I had used ObjC++ before when embedding a c++ rendering engine in an NSOpenGLView, many years ago, but I don't recall anything specifically in the objc++ frontend that did anything but punt to either the objc or c++ backend. What I do remember is that the debugging support is terrible! It implements Dwarf with the language ObjC++, and then in the debuginfo Classes in objc are mapped to dwarf's Object/Class thing, and classes in C++ are mapped to the same Object/Class thing. Apple's debugger tells the difference by looking at symbol mangling, In particular their objc symbols contain +-[()]: characters, and it can tell from the first character if it's objective-c or not. A solution like that was never really acceptable for gdb. So you generally had to set language to c++, or objc at every step. This is very unlikely to have changed for gcc, is it any better on clang?