in include/spotify/json/codec/object.hpp [283:298]
void add_field(
const std::string &name,
bool required,
get_type (get_object_type::*getter)() const,
void (set_object_type::*setter)(set_type),
codec_type &&codec) {
using getter_ptr = get_type (get_object_type::*)() const;
using setter_ptr = void (set_object_type::*)(set_type);
using field_type = member_fn_field<getter_ptr, setter_ptr, typename std::decay<codec_type>::type>;
_fields.save(name, required, std::shared_ptr<detail::field>(new field_type(
required,
_fields.num_required_fields(),
std::forward<codec_type>(codec),
getter,
setter)));
}