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>>
있습니까?