| # 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 |