Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Add Transparent Comparator Support

Đang mở
#134 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

@joesdiner đang làm issue này rồi.

Từ ngày 19/4/2024.

  • #135 của @joesdiner — đang mở

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
45/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
cpp
Lĩnh vực
cli

Hướng nghiên cứu

Bắt đầu bằng cách xác định khai báo variables_map và lớp cơ sở std::map mà nó kế thừa. Xem xét các yêu cầu của C++14 đối với bộ so sánh trong suốt và cách sử dụng find hiện có được nêu trong issue, sau đó kiểm tra các bài kiểm thử của module đối với việc tra cứu variables_map. Được coi là hoàn thành khi các phép tra cứu chấp nhận các khóa tương thích dạng chuỗi mà không tạo các đối tượng std::string tạm thời không cần thiết và hành vi hiện có vẫn được giữ nguyên.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

It would be great of boost::program_options::variables_map could have transparent comparator support (c++14 feature), to potentially avoid unnecessary object creation when accessing values in the map. Theoretically only a std::less<> needs to be added as the third template parameter of the std::map variables_map inherits from. Currently:

// 1
boost::program_options::variable_map vm;
vm.find("test"); // implicit std::string object created and destoryed 

// 2
std::string_view sv("test");
vm.find(sv); // does not compile

// 3
vm.find(std::string(sv)); // only way to inspect with a std::string_view, explicit std::string object created and destroyed

With a transparent comparator 1 will not create a std::string object and just compare directly against the c-string literal. 2 will work as shown without any extra objects being created. 3 will be unnecessary

Ngôn ngữ chính
C++
Star
136
Fork
117
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của boostorg/program_options

Tất cả issue của boostorg/program_options

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.