Merge branch 'develop' into feature/update
This commit is contained in:
commit
002410410f
2 changed files with 12 additions and 1 deletions
10
.travis.yml
10
.travis.yml
|
@ -42,7 +42,7 @@ matrix:
|
||||||
after_success:
|
after_success:
|
||||||
- make check TEST_PREFIX="valgrind --error-exitcode=1 --leak-check=full " TEST_PATTERN=""
|
- make check TEST_PREFIX="valgrind --error-exitcode=1 --leak-check=full " TEST_PATTERN=""
|
||||||
|
|
||||||
# cLang sanitizer
|
# clang sanitizer
|
||||||
# note: sadly clang's libc++ has errors when running with sanitize,
|
# note: sadly clang's libc++ has errors when running with sanitize,
|
||||||
# so we use clang with gcc's libstdc++ which doesn't give those error.
|
# so we use clang with gcc's libstdc++ which doesn't give those error.
|
||||||
# that's why we need to install g++-6 to get the lastest version
|
# that's why we need to install g++-6 to get the lastest version
|
||||||
|
@ -267,6 +267,14 @@ matrix:
|
||||||
################
|
################
|
||||||
|
|
||||||
script:
|
script:
|
||||||
|
# get CMake (only for systems with brew - macOS)
|
||||||
|
- |
|
||||||
|
if [[ !(-x $(which cmake)) && (-x $(which brew)) ]]; then
|
||||||
|
brew update
|
||||||
|
brew install cmake
|
||||||
|
cmake --version
|
||||||
|
fi
|
||||||
|
|
||||||
# make sure CXX is correctly set
|
# make sure CXX is correctly set
|
||||||
- if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
|
- if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
|
||||||
|
|
||||||
|
|
|
@ -539,6 +539,9 @@ Some important things:
|
||||||
* Those methods **MUST** be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined).
|
* Those methods **MUST** be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined).
|
||||||
* When using `get<your_type>()`, `your_type` **MUST** be [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). (There is a way to bypass this requirement described later.)
|
* When using `get<your_type>()`, `your_type` **MUST** be [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). (There is a way to bypass this requirement described later.)
|
||||||
* In function `from_json`, use function [`at()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a93403e803947b86f4da2d1fb3345cf2c.html#a93403e803947b86f4da2d1fb3345cf2c) to access the object values rather than `operator[]`. In case a key does not exists, `at` throws an exception that you can handle, whereas `operator[]` exhibits undefined behavior.
|
* In function `from_json`, use function [`at()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a93403e803947b86f4da2d1fb3345cf2c.html#a93403e803947b86f4da2d1fb3345cf2c) to access the object values rather than `operator[]`. In case a key does not exists, `at` throws an exception that you can handle, whereas `operator[]` exhibits undefined behavior.
|
||||||
|
* In case your type contains several `operator=` definitions, code like `your_variable = your_json;` [may not compile](https://github.com/nlohmann/json/issues/667). You need to write `your_variable = your_json.get<decltype your_variable>();` instead.
|
||||||
|
* You do not need to add serializers or deserializers for STL types like `std::vector`: the library already implements these.
|
||||||
|
|
||||||
|
|
||||||
#### How do I convert third-party types?
|
#### How do I convert third-party types?
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue