miloyip/rapidjson — pull request #125 by pah (2014-08-30 15:04:04+00:00)
Title: Fix comparison operator ambiguities between Value/Document

As mentioned in #113, there are several ambiguities reported on several compilers, when using the templated `==`/`!=` operators. The patch in a9add7b only fixed the issue for `GenericValue` objects, still causing ambiguities when comparing with a `GenericDocument`.

This pull-request should address this issue, disambiguating arbitrary classes derived from `GenericValue`.
Tested on:
* MSVC 2005, 2008, 2013
* GCC 4.4 – 4.9, Clang 3.4 – 3.6 (Linux)
* GCC 4.3 (Cygwin)

Due to some bugs in MSVC 2005, the template meta functions required some changes. Strangely enough, the `GenericValue(bool)` constructor broke with the previous traits after adding the constraints to the comparison operators. The current implementation now works on MSVC 2005 again. Still, a sanity check has been added to the constructor.