Modern C++ is pretty darn nice to work with. It's not a "safe" language by any means, but with good tooling, design, and a good static analyzer you can prevent the vast majority of memory bugs you'd run into with C. Plus the compilers are so mature you get great performance right out of the box.
Yup. And if you don't you can drop all the way down to intrinsics and assembly. It's pretty nice.
Actually Windows has always enjoyed better C++ related tooling than any UNIX other than Mac OS X.
And standards compliance is actually the best one among commercial C++ vendors.
http://en.cppreference.com/w/cpp/compiler_support
Also there is the world of commercial UNIXes, mainframes and embedded OSes, where using clang or gcc isn't always an option.
For example TI is still stuck on C++98, not even C++03.
Also, there's no qualitative difference between C++ toolchains on macOS and Linux, since the same compilers are used on both.
> no qualitative difference between C++ toolchains on macOS and Linux,
Where is Instruments, XCode, Cocoa, IO Kit for GNU/Linux?
- graphical debugging of parallel tasks and threads
- displaying data structures graphically with code navigation
- WYSIWYG UIs with tooling like Blend
- GPU debugging
- Code navigation across object files, shared libraries and source code
- Incremental compilation and linking with intermediate representations stored in a database.
- Out of the box representation for all STL data structures and user defined types
Tooling is much more than just a plain old compiler.
What Microsoft compiler doesn't provide in my experience is decent codegen.
Not when compared with the enterprise and ultimate versions. Or with the changes done in VS 2015, improved in the upcoming VS 2017 for incremental building and database storage of symbols.
> Both QT and GTK have GUI builders.
Miles behind of what Blend + XAML allow for.
> NVidia provides a plugin to debug and profile GPU code.
How well does it work with Intel and AMD cards?
> What Microsoft compiler doesn't provide in my experience is decent codegen.
On Windows, among commercial compilers, only ICC generates better code.
There are reasons for bad code navigation and missing refactoring features: https://blogs.msdn.microsoft.com/vcblog/2015/09/25/rejuvenat...
Ha I always thought there were actually none.
even find all references is not reliable
Yup that sucks. It's better in VS2015
Project files are a mess.
Yeah it's xml but for the rest it just lists files and options, how is that much of a problem?
There is vcxproj file to define build and vcxproj.filters file for directory structure view in VS (I do not understand a reason for this).
Can be easily solved by ditching the filters file all together and enabling 'All Files' option in Solution Explorer. Unless you insist on having all files listed by extension, which is imo a useless complete mess for enything but small projects.
you can't set hexadecimal format just for one variable
You can, use '<variablename>, h' in the watch window
Does not work for me, because files are located in subdirectories. I see only long list of files from all directories without filters. Maybe it is just bad project structure but I cannot change it. I found plugin for 2015 which is able to generate filters from directory structure, but I have to wait for upgrade.
Not if you select 'Show All Files' in solution explorer, then it shows the entire subdirectory tree.
Depends on what you mean with tooling I guess. CLang on windows is fine these days, so is msys. So, with possibly some quirks, that unix tooling runs on windows as well so it cannot be vastly worse tooling if it's the same.
Still, talking IDEs and visual debugging which you might or might not consider a part of tooling, unfortunately VS still runs circles around the free competition. So much that I'm betting teams are willing to give up some standard compliance in favour of using it.
It's a major pita when MSVC cannot understand a pefectly standard C++ construction.
And Microsoft is well aware of that, they made jumps and leaps recently to bring their level of C++ compiler support to the actual standard level, finally you can say MSVC actually understands standard C++.