Jest sytuacja, w której chcę zebrać wszystkie nazwy węzłów ścieżki do klucza w JSON. Zastanów się nad warunkiem, że indeks tablicy „0”, „1” są również dozwolone, ale łatwo jest zapomnieć o cudzysłowach, co doprowadziłoby do awarii, gdy dereferencja. Więc chcę to odrzucić. Przykład:
#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;
}
Znalazłem i wypróbowałem to Jak uniknąć niejawnej konwersji na funkcje niebędące konstruktorami? jak następuje:
#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;
}
Ale kompilator wciąż mnie nie rozumiał.
Jakieś sugestie?
Proszę wskazać wszelkie niewłaściwe użycie terminologii i założeń, dziękuję!
nullptr
?
std::vector<const char*>
zamiaststd::vector<std::string>>
?