ev-json-ranges-concepts-test-002¶
| 字段 | 值 |
|---|---|
| 项目 | nlohmann/json |
| 固定 commit | 55f93686c015 |
| 路径 | tests/src/unit-iterators2.cpp |
| 行段 | L880-L894 |
| 特性 | ranges 与 views |
| 许可证 | MIT |
| 代码来源 | 项目源码 |
| 级别 | manual |
| 审核 | zyuhao7 @ 2026-10-24 |
| 测试代码 | 是 |
| 发现方式 | regex |
用法¶
用 ranges concept 验证迭代器与视图属性
为什么典型¶
在编译期锁定 bidirectional_range、input_range 与 iterator_t 的关系,比只测运行时行为更早发现接口退化。
摘录¶
SECTION("concepts")
{
using nlohmann::detail::iteration_proxy_value;
CHECK(std::bidirectional_iterator<json::iterator>);
CHECK(std::input_iterator<iteration_proxy_value<json::iterator>>);
CHECK(std::is_same<json::iterator, std::ranges::iterator_t<json>>::value);
CHECK(std::ranges::bidirectional_range<json>);
using nlohmann::detail::iteration_proxy;
using items_type = decltype(std::declval<json&>().items());
CHECK(std::is_same<items_type, iteration_proxy<json::iterator>>::value);
CHECK(std::is_same<iteration_proxy_value<json::iterator>, std::ranges::iterator_t<items_type>>::value);
CHECK(std::ranges::input_range<items_type>);
}
备注¶
测试证据;补充生产路径之外的 concept 约束验证。