C'è una situazione in cui voglio raccogliere tutti i nomi dei nodi di un percorso di una chiave in JSON. Considera anche le condizioni dell'indice di array "0", "1", ma è facile dimenticare le virgolette, che porterebbe a un arresto anomalo quando si verifica la dereferenza. Quindi voglio respingere questo. Esempio:
#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;
}
Ho trovato e provato questo Come evitare conversioni implicite su funzioni non costruttive? come segue:
#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;
}
Ma il compilatore non mi ha ancora capito.
Qualche suggerimento?
Si prega di segnalare qualsiasi uso improprio di terminologie e ipotesi, grazie!
nullptr
anche?
std::vector<const char*>
invece distd::vector<std::string>>
?