Unify handling of string-like arguments across the API
まだ誰も着手していません。
評価
調査の方向性
まず String::New、Symbol::New、Symbol::For の宣言と実装を見つけ、次にそれらに既存する std::string および std::string_view のオーバーロードを比較します。冗長なオーバーロードが制約付きの string_view 風テンプレートによって統合され、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時間
- マージ済み PR(30日)
- 2
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- 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 1週間以上 初心者へのやさしさ 25/100
nodejs/node-addon-api#1665 · コメント 5 件 ·
nodejs/node-addon-api の issue をすべて見る
似ている issue
-
Website Doc Typo オープン
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
-
難易度 1/5 1〜3時間 初心者へのやさしさ 92/100
autowarefoundation/autoware_universe#13413 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
automated-analysis bug memory-safety
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100