跳转至

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 约束验证。

查看固定 commit 源码 · 返回证据索引