2017-03-15 13 views
10

일부 부스트 라이브러리는 헤더 전용이고 일부는 그렇지 않으며 여러 가지 이유로 여러 가지 이유가 있습니다.Boost.ProgramOptions이 헤더 전용이 아닌 이유는 무엇입니까?

Boost.ProgramOptions이 헤더 전용이 아닌 이유/디자인 결정이 있습니까?

문서의 "작은"라이브러리라고 주장하고 시스템 관련 이유 (스레드 또는 asio 같은)가 표시되지 않기 때문에 궁금합니다.

+0

아마도 내 대답은 당신을 후원하고 있습니다. 전문가가 대답 할 수 있도록 upvote를하십시오. – Bathsheba

+0

이 작업이 필요한지는 모르겠지만 거의 모든 코드가'.cpp' 파일에있는 것처럼 보이며 헤더 전용으로 시도하지도 않습니다. https://github.com/ boostorg/program_options –

+0

블라디미르 프 루스 (http://vladimirprus.com/)에게 이메일을 보내어 답을 얻을 수 있는지 알아볼 수 있습니다. – sigbjornlo

답변

-1

단 하나 정의 규칙 위반으로 인해 모든 헤더가 C++ 코드로 기록 될 수있는 것은 아닙니다.

예를 들어, 클래스 구성원 인 static의 저장 예약은 정확히 하나의 번역 단위 여야합니다 (향후 C++ 표준이이를 회피 할 수는 있지만).

원래의 의도는 Boost가 머리말 일 뿐이었지만 신속하게 그 포부를 포기해야했습니다.

+1

예, Boost.ProgramOptions의 구체적인 사례를 찾고 있습니다. –

+3

사촌은 그런 구조를 가지고 있습니다. – Bathsheba

+3

C++ 17 인라인 변수는 당연히 문제가 아니지만 정적 클래스 템플릿 멤버로 에뮬레이트 될 수 있습니다. – Quentin

-1

프로그램 옵션은 작지만 Regex 다음으로 두 번째로 큰 라이브러리라고 밝혀졌습니다. (그것은 파일 시스템과 쓰레드 라이브러리를 향상시키는 것보다 큽니다.) 나는 여러분이 포함 된 헤더를 가지고 프로젝트를 질식시키지 않고 라이브러리를 구축하게되어 기쁘다 고 믿습니다. 아마도 저자는 시작했을 때 작을 것이라고 생각했으며 기능을 확장하고 추가 할 때 주석을 변경하는 것을 잊어 버렸을 것입니다.