JSONでキーへのパスのすべてのノード名を収集したい状況があります。配列インデックス「0」、「1」の条件も許可されていることを考慮してください。ただし、引用符を忘れがちであり、逆参照するとクラッシュする可能性があります。これを拒否したいのですが。例:
#include <vector>
#include <iostream>
int func(const std::vector<const char*>& pin) {
return pin.size();
}
int main() {
// {"aname", "3", "path", "0"} wanted but this still compile
std::cout << func({"aname", "3", "path", 0}) << std::endl;
}
私はこれを見つけて試してみました非構築関数の暗黙的な変換をどのように回避しますか?次のように:
#include <vector>
#include <iostream>
int func(const std::vector<const char*>& pin) {
return pin.size();
}
template<typename T>
int func(T pin) = delete;
int main() {
std::cout << func({"aname", "3", "path", 0}) << std::endl;
}
しかし、コンパイラはまだ私を理解していませんでした。
なにか提案を?
用語や仮定の誤用を指摘してください、ありがとうございます!
nullptr
も禁止したいですか?
std::vector<const char*>
代わりに使用する理由はありますstd::vector<std::string>>
か?