Closed qiangxinglin closed 1 year ago
msgpack::variant is a type that is mapped to https://github.com/msgpack/msgpack/blob/master/spec.md. So only the following types are supported https://github.com/msgpack/msgpack-c/blob/cpp_master/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp#L53
It is slightly different from std::variant
.
throws MSVC errors:
error C2665: “boost::variant<msgpack::v1::type::nil_t,bool,int64_t,uint64_t,double,std::string,boost::string_ref,std::vector<char,std::allocator>,msgpack::v1::type::raw_ref,msgpack::v1::type::ext,msgpack::v1::type::ext_ref,boost::recursive_wrapper<std::vector<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::allocator<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>,boost::recursive_wrapper<std::map<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>,boost::recursive_wrapper<std::multimap<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>>::variant”: none of the 3 overloads could convert all the argument types
Possible either : “boost::variant<msgpack::v1::type::nil_t,bool,int64_t,uint64_t,double,std::string,boost::string_ref,std::vector<char,std::allocator>,msgpack::v1::type::raw_ref,msgpack::v1::type::ext,msgpack::v1::type::ext_ref,boost::recursive_wrapper<std::vector<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::allocator<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>,boost::recursive_wrapper<std::map<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>,boost::recursive_wrapper<std::multimap<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>>::variant(boost::variant<msgpack::v1::type::nil_t,bool,int64_t,uint64_t,double,std::string,boost::string_ref,std::vector<char,std::allocator>,msgpack::v1::type::raw_ref,msgpack::v1::type::ext,msgpack::v1::type::ext_ref,boost::recursive_wrapper<std::vector<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::allocator<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>,boost::recursive_wrapper<std::map<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>,boost::recursive_wrapper<std::multimap<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>> &&) noexcept()”
Or: “boost::variant<msgpack::v1::type::nil_t,bool,int64_t,uint64_t,double,std::string,boost::string_ref,std::vector<char,std::allocator>,msgpack::v1::type::raw_ref,msgpack::v1::type::ext,msgpack::v1::type::ext_ref,boost::recursive_wrapper<std::vector<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::allocator<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>,boost::recursive_wrapper<std::map<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>,boost::recursive_wrapper<std::multimap<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>>::variant(const boost::variant<msgpack::v1::type::nil_t,bool,int64_t,uint64_t,double,std::string,boost::string_ref,std::vector<char,std::allocator>,msgpack::v1::type::raw_ref,msgpack::v1::type::ext,msgpack::v1::type::ext_ref,boost::recursive_wrapper<std::vector<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::allocator<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>,boost::recursive_wrapper<std::map<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>,boost::recursive_wrapper<std::multimap<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>> &)”
Or : “boost::variant<msgpack::v1::type::nil_t,bool,int64_t,uint64_t,double,std::string,boost::string_ref,std::vector<char,std::allocator>,msgpack::v1::type::raw_ref,msgpack::v1::type::ext,msgpack::v1::type::ext_ref,boost::recursive_wrapper<std::vector<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::allocator<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>,boost::recursive_wrapper<std::map<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>,boost::recursive_wrapper<std::multimap<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,std::less<msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>,std::allocator<std::pair<const msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>,msgpack::v1::type::basic_variant<std::string,std::vector<char,std::allocator>,msgpack::v1::type::ext>>>>>>::variant(void) noexcept()”