Існує ситуація, коли я хочу зібрати всі назви вузлів шляху до ключа в 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>>
?