#4 I want something that can be ported to Linux, OpenBSD, Mac OSX, OS/2, AmigaOS, or whatever I want to port the app to. Sorry CRC, Delphi/Kylix won't do that.
Well, Norm, neither will anything else if you're talking about writing a GUI app. Not too long ago, there were cross-platform libraries like Zinc or zApp that provided an object framework (cf. MFC) that was "portable" (more or less...). What we had was simply a library that a linker would link into the image. You made calls into the library, that abstracted (to a greater or lesser degree) the base-level interface to the native GUI libraries for the platform. I dunno, but I don't think these exist anymore.
But even if they do, these libraries (or other libraries like VCL, CLX, the gawd-awful MFuckingC, the god-forsaken .NyET, or anybody else's approach) are libraries. They are NOT C++. Please get that straight. You learn C++ by writing code to the ANSI standard (whenever possible). You then learn the interface to one of these libraries, and you call them using your newly-minted C++ skills. The compiler is hardly the issue. Don't make the mistake of thinking that IDE == compiler == language (e.g. "I'm learning Visual C++!"). Learn ANSI C++. Find a compiler that will compile ANSI C++. Learn one or more object framework libraries to allow yourself to write GUI code, if you want. Learn the STL for everything else. Then have fun!