Il y a une situation où je veux collecter tous les noms de nœuds d'un chemin d'accès à une clé dans JSON. Tenez compte de la condition de l'index du tableau "0", "1" sont également autorisés, mais il est facile d'oublier les guillemets, ce qui conduirait à un crash lors de la déréférence. Je veux donc rejeter cela. Exemple:
#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;
}
J'ai trouvé et essayé ceci Comment éviter les conversions implicites sur des fonctions non constructives? comme suit:
#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;
}
Mais le compilateur ne m'a toujours pas compris.
Toute suggestion?
Veuillez signaler toute utilisation abusive des terminologies et des hypothèses, merci!
nullptr
aussi interdire ?
std::vector<const char*>
place destd::vector<std::string>>
?