You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:15:44