Есть ситуация, когда я хочу собрать все имена узлов пути к ключу в JSON. Рассмотрим условие индекса массива «0», «1» также допускается, но легко забыть кавычки, что привело бы к cra sh при разыменовании. Поэтому я хочу отказаться от этого. Пример:
#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;
}
Но компилятор все еще не понял меня.
Любое предложение?
Пожалуйста, укажите на любое неправильное использование терминологии и предположений, спасибо!