如何为std::chrono::minutes适配boost::json的tag_invoke value_from机制?
Boost.JSON tag_invoke 适配 std::chrono::minutes 编译问题
我尝试使用boost::json的tag_invoke机制实现std::chrono::minutes的JSON存入/读取,这个机制对自定义小结构体工作正常,但适配chrono类型时始终无法写出正确的语法。
我试过两种写法:
第一种:
void tag_invoke(boost::json::value_from_tag const&, boost::json::value &value, std::chrono::minutes const &minu); std::chrono::minutes tag_invoke(boost::json::value_to_tag<std::chrono::minutes> const&, boost::json::value const &value);
第二种:
namespace std::chrono { void tag_invoke(boost::json::value_from_tag const&, boost::json::value &value, minutes const &minu); minutes tag_invoke(boost::json::value_to_tag<minutes> const&, boost::json::value const &value); }
两种写法都会触发g++ 11.3的相同编译错误:
/.../_deps/boost-src/libs/json/include/boost/json/value_from.hpp:87: error: no matching function for call to ‘value_from_impl(std::chrono::duration<long int, std::ratio<60> >, std::remove_reference<boost::json::storage_ptr&>::type)’
这明显是我的重载未被编译器找到/识别的典型表现,我到底忽略了什么细节?
内容的提问来源于stack exchange,提问作者kaba
相关产品推荐
相关产品推荐

