2017-03-15 27 views
10

Một số thư viện tăng chỉ có tiêu đề, một số không phải là và vì nhiều lý do khác nhau, v.v.Tại sao Boost.ProgramOptions không chỉ là tiêu đề?

Có một lý do cụ thể/quyết định thiết kế nào không?

Tôi tự hỏi vì nó tuyên bố là một thư viện "nhỏ" trong tài liệu của nó và tôi không thấy bất kỳ lý do nào liên quan đến hệ thống (như chủ đề hoặc asio).

+0

Có lẽ câu trả lời của tôi là bảo trợ bạn. Có một upvote để một chuyên gia có thể trả lời. – Bathsheba

+0

Tôi không biết nếu nó cần phải làm điều này, nhưng có vẻ như gần như tất cả các mã trong tập tin '.cpp' và nó thậm chí không cố gắng để được chỉ tiêu đề: https://github.com/ boostorg/program_options –

+0

Bạn có thể muốn bỏ qua Vladimir Prus (http://vladimirprus.com/) một email để xem anh ta có câu trả lời cho bạn hay không. – sigbjornlo

Trả lời

-1

Không phải tất cả mã C++ đều có thể được viết chỉ trong tiêu đề do vi phạm quy tắc một định nghĩa.

Ví dụ: đặt trước bộ nhớ cho thành viên static của một lớp cần phải có chính xác một đơn vị dịch (mặc dù các tiêu chuẩn C++ trong tương lai có thể làm giảm điều đó).

Mục đích ban đầu là để Boost chỉ là tiêu đề, nhưng họ phải nhanh chóng từ bỏ nguyện vọng đó.

+1

Vâng, tôi biết, tìm kiếm trường hợp cụ thể của Boost.ProgramOptions. –

+3

Cuz nó chứa một cấu trúc như vậy, bẩm sinh! – Bathsheba

+3

C++ 17 biến nội tuyến là tất nhiên trong số các câu hỏi tại thời điểm đó, nhưng chúng có thể được mô phỏng với các thành viên mẫu lớp tĩnh. – Quentin

-1

Tùy chọn chương trình tuyên bố là nhỏ, nhưng nó trở thành thư viện lớn thứ hai mà chúng tôi đã xây dựng, sau Regex. (Nó lớn hơn thư viện Fileystem và Thread.) Tôi tin rằng bạn nên vui vì họ đang xây dựng một thư viện cho nó thay vì nghẹt thở dự án của bạn với hàng tấn các tiêu đề. Có lẽ tác giả nghĩ rằng nó sẽ nhỏ khi anh ấy bắt đầu và quên thay đổi nhận xét khi nó tiếp tục phát triển và thêm các tính năng.

Các vấn đề liên quan