Refactorizations:
- Rearranged members of Value to reduce structures size
- Removed redundant ctor of Value
- Fixed VS warning in tokenize.cpp
Fixed remaining issue in #3503: Member function taking a function pointer must not be "simplified" to a variable initialization
Fixed handling of member function pointers in setVarId and SymbolDatabase (#4577)
Save "->" in Token::originalName if simplified to "."; Fix false positive #4890.
Fixed #5397 (False positive: Same expression on both sides of '&')
MathLib::isNullValue(): Fixed bug in detecting zero values. Improved test coverage of MathLib::IsNullValue().
Refactorizations optimizing std::string usage:
1) Added global const std::string emptyString; object. It is used for:
- Empty string passed to a function, which takes the parameter by reference
-> Avoids constructor call (std::string::string(""))
=> Reduces binary size (25% for testrunner.exe, 5% for cppcheck-core.dll)
=> Avoids unnecessary calls
- Functions, that return a string by reference
-> Even functions that return an empty string in some branches can return by reference now.

2) Added overloads for TestFixture::assertEquals for the most common use cases:
-> Moves conversion from const char[] to std::string into a function, reducing code duplication in binary.
Updated solution to VS12
Visual Studio: Use testsuite.h as precompiled header (compiled into testrunner.cpp)
-> Reduces build time of project testrunner by 13 seconds (16%)
Removed DJGPP/__sun hack in check.h
Refactorization: Moved condition in Token::tokAt() out of loop.
Benchmark code
Refactorized iterator checking:
- Fixed false positive #5669
- Use symboldatabase in CheckStl::pushback()
- Improved support for erase on std::vector and find
Support "else if" and do-loop in CheckStl::checkDereferenceInvalidIterator()