Có một tình huống mà tôi muốn thu thập tất cả các tên nút của một đường dẫn đến một khóa trong JSON. Xem xét điều kiện của chỉ số mảng "0", "1" cũng được cho phép, nhưng rất dễ quên các trích dẫn, điều này sẽ dẫn đến một sự cố khi thực hiện quy định. Vì vậy, tôi muốn từ chối điều này. Thí dụ:
#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;
}
Tôi đã tìm và thử điều này Làm cách nào để tránh chuyển đổi ngầm định trên các hàm không xây dựng? như sau:
#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;
}
Nhưng trình biên dịch vẫn không hiểu tôi.
Bất cứ đề nghị nào?
Xin vui lòng chỉ ra bất kỳ lạm dụng các thuật ngữ và giả định, cảm ơn bạn!
nullptr
cũng không?
std::vector<const char*>
thay vìstd::vector<std::string>>
?