Unify handling of string-like arguments across the API
還沒有人認領這個 Issue。
評估
研究方向
先找出 String::New、Symbol::New 和 Symbol::For 的宣告與實作,接著比較它們現有的 std::string 與 std::string_view 多載。完成的標準是:透過受約束的 string_view-like 樣板統一多餘的多載,同時保留 const char* 與字面值的專用處理,並持續排除 nullptr。
由索引模型根據 Issue 內容生成。
描述
Follow-up to #1741 / #1742.
Several APIs still carry multiple overloads for different string types. Now that the library requires C++17, we can modernize by preferring std::string_view and removing the redundant UTF-8 overloads, replacing them with a single constrained template, as a semver-major change.
For String::New, Symbol::New, and Symbol::For, collapse the const std::string& + std::string_view pair into:
template <typename T,
std::enable_if_t<
std::is_convertible_v<const T&, std::string_view> &&
!std::is_convertible_v<const T&, const char*>, int> = 0>
static String New(napi_env env, const T& t);
This matches the C++17 standard-library idiom (std::string's find/append/compare/… members). The !is_convertible_v<const T&, const char*> clause keeps const char* and literals on the dedicated overload and filters nullptr (avoiding a UB string_view(nullptr)).
The enable_if alias is shareable across APIs e.g. enable_if_string_view_like_t<T>.
- 主要語言
- C++
- 星號
- 2.4k
- 分支
- 499
- 平均合併
- 2 天 11 小時
- 30 天內合併 PR
- 2
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
nodejs/node-addon-api 的其他 Issue
-
blocked SemVer-major
難度 4/5 3-5 天 新手友好度 52/100
nodejs/node-addon-api#1748 ·
-
SemVer-major
難度 4/5 3-5 天 新手友好度 55/100
nodejs/node-addon-api#1747 · 2 則留言 ·
-
blocked SemVer-major
難度 4/5 3-5 天 新手友好度 52/100
nodejs/node-addon-api#1746 ·
-
stale
難度 4/5 3-5 天 新手友好度 48/100
nodejs/node-addon-api#1724 · 2 則留言 ·
-
never-stale
難度 5/5 一週以上 新手友好度 25/100
nodejs/node-addon-api#1665 · 5 則留言 ·
查看 nodejs/node-addon-api 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 86/100
-
Sensor initialization takes very long when `--initial-sim-time` is set to current UNIX timestamp 未關閉
難度 2/5 1-3 小時 新手友好度 78/100
gazebosim/gz-sensors#662 · 1 則留言 ·
-
enhancement
難度 2/5 1-3 小時 新手友好度 76/100
-
comp-datalake
難度 2/5 1-3 小時 新手友好度 88/100
ClickHouse/ClickHouse#121222 ·
-
難度 2/5 1-3 小時 新手友好度 68/100
LadybirdBrowser/ladybird#12123 ·