This was a good year for C++!
Short summary (language features):
Clang supports C++14 GCC supports C++11 and most of C++14 (Full support in upcoming GCC 5.0) Intel 15.0 supports C++11 (some features on Linux/OSX only) Visual Studio tries to catch up with C++11, but it also introduces C++14 features as well… and it become (almost) free!
Some time ago I’ve seen an inspiring talk from CppCon 2013: “C++ Seasoning” by Sean Parent. One of the main points of this presentation was not to use raw loops. Instead, prefer to use existing algorithms or write functions that ‘wraps’ such loops. I was curious about this idea and searched for nice code examples.
When you write:
char strA[] = "Hexlo World!"; strA[2] = 'l'; Everything works as expected. But what about:
char *strP = "Hexlo World!"; strP[2] = 'l'; Do you think it will work correctly? If you are not sure, then I guess, you might be interested in the rest of article.
Recently ended DConf 2014 conference was, as usually, a great event filled with interesting topics about the D language. I still need to update my little knowledge about the language and see more presentations, but one keynote especially drew my attention. This was a talk from Scott Meyers called The Last Thing D Needs.
After watching some of the talks from Build 2014 - especially “Modern C++: What You Need to Know” and some talks from Eric Brumer I started thinking about writing my own test case. Basically I’ve created simple code that compares vector<Obj> vs vector<shared_ptr<Obj>> The first results are quite interesting so I thought it is worth to describe this on the blog.
C++11 conformance
GCC 4.81 - 100% Clang 3.3 - 100% Intel 14.0 - 84% Visual C++ 2013 - 66% Another year is almost over so it is a good time to check what is going on with C++. This time more stats and real data compared to my post from the previous year.
Include Guards, Pragma Once, Predeclarations and other hints that might be useful when dealing with includes.
What can we do with file including in C++? Do we need to put all the other header files of the project (plus third party libraries) in every file all the time? For sure there have to be some rules to manage that issue properly.
Recently, I’ve found something interesting in Visual Studio that improved my Logger!
I had a function called AddMsg
/** appends message to the log file */ void AddMsg(LOG_MODE m, int level, char* strModule, char *strMsg, ...); But, when you wanted to add a comment you needed to use quite complicated and long syntnax, like: