forked from Research/WhisperCom
32 lines
806 B
Markdown
32 lines
806 B
Markdown
|
# adl_serializer
|
||
|
|
||
|
```cpp
|
||
|
template<typename, typename>
|
||
|
struct adl_serializer;
|
||
|
```
|
||
|
|
||
|
Serializer that uses ADL ([Argument-Dependent Lookup](https://en.cppreference.com/w/cpp/language/adl)) to choose
|
||
|
`to_json`/`from_json` functions from the types' namespaces.
|
||
|
|
||
|
It is implemented similar to
|
||
|
|
||
|
```cpp
|
||
|
template<typename ValueType>
|
||
|
struct adl_serializer {
|
||
|
template<typename BasicJsonType>
|
||
|
static void to_json(BasicJsonType& j, const T& value) {
|
||
|
// calls the "to_json" method in T's namespace
|
||
|
}
|
||
|
|
||
|
template<typename BasicJsonType>
|
||
|
static void from_json(const BasicJsonType& j, T& value) {
|
||
|
// same thing, but with the "from_json" method
|
||
|
}
|
||
|
};
|
||
|
```
|
||
|
|
||
|
## Member functions
|
||
|
|
||
|
- **from_json** - convert a JSON value to any value type
|
||
|
- **to_json** - convert any value type to a JSON value
|