跳转至

ev-json-string-view-exclusion-002

字段 值
项目 nlohmann/json
固定 commit 55f93686c015
路径 include/nlohmann/json.hpp
行段 L1907-L1917
特性 std::string_view
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-24
测试代码 否
发现方式 regex

用法

用 is_same 排除 string_view 的隐式转换重载

为什么典型

在泛型转换约束中显式排除视图类型,避免临时视图被转换成 JSON 值后留下悬垂引用。

摘录

    template < typename ValueType, typename std::enable_if <
                   detail::conjunction <
                       detail::negation<std::is_pointer<ValueType>>,
                       detail::negation<std::is_same<ValueType, std::nullptr_t>>,
                       detail::negation<std::is_same<ValueType, detail::json_ref<basic_json>>>,
                                        detail::negation<std::is_same<ValueType, typename string_t::value_type>>,
                                        detail::negation<detail::is_basic_json<ValueType>>,
                                        detail::negation<std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>>,
#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1910 && _MSC_VER <= 1914))
                                                detail::negation<std::is_same<ValueType, std::string_view>>,
#endif

备注

生产路径;条件编译覆盖特定编译器组合。

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