선택적 값에 대한 빠른 솔루션을 구현해야합니다. 제 3 자 라이브러리에서 드래그하고 싶지 않습니다.std :: optional 클래스 구현
일반적으로 선택적 클래스는 어떻게 구현됩니까? 선택 객체는 'null-state'에있을 때 기본 객체를 여전히 기본 구성합니까?
선택적 값에 대한 빠른 솔루션을 구현해야합니다. 제 3 자 라이브러리에서 드래그하고 싶지 않습니다.std :: optional 클래스 구현
일반적으로 선택적 클래스는 어떻게 구현됩니까? 선택 객체는 'null-state'에있을 때 기본 객체를 여전히 기본 구성합니까?
우선 Boost (특히 Boost.Optional)를 살펴 보길 강력히 권장합니다. Boost를 사용하는 것은 거의 표준적인 관행이며 바퀴 달린 것을 다시 만들지 않을 것입니다. 옵션 클래스는 일반적으로 어떻게 구현되는지
예를 https://github.com/akrzemi1/Optional에 대한
당신이 Boost.Optional을 사용하기를 꺼려 어떤 이유로, 유사 헤더 전용 라이브러리의 무리가 있다면?
일반적으로 값이 비어 있는지 여부를 나타내는 부울 플래그와 값을 저장하기위한 적절한 크기로 정렬 된 바이트 배열입니다.
'null-state'에있을 때 선택적 개체가 기본 개체를 여전히 기본 구성합니까?
아니오; 이는 저장된 유형에 대한 불필요한 요구 사항을 부과 할뿐만 아니라 잠재적 인 원치 않는 부작용을 유발합니다. 저장된 객체는 optional
이 비어 있지 않을 때 placement-new로 만들어지며 비어있을 때 소멸자 호출로 파괴됩니다.
신속하고 지저분한 구현을 위해 Boost 또는 제안 된 표준 버전의 모든 유연성이 필요하지 않은 경우 단순히 기본 생성 개체를 저장할 수 있습니다.
제 3 자 라이브러리에서 드래그하고 싶지 않습니다.
나는 당신이 왜 그렇게 느껴지는지 다시 생각할 것입니다. Boost 구현은 헤더 전용이며, 잘 테스트되고, 도착할 경우 표준 버전으로 직접 교체 가능해야합니다. 나는 분명히 나 자신을 함께 수선 한 것 이상으로 그것을 믿을 것이다.
[Boost.Optional] (http://www.boost.org/doc/libs/1_56_0/libs/optional/doc/html/index.html) 구현을 살펴 보셨습니까? – Angew
C++ 표준 라이브러리는 타사 라이브러리가 아닙니다. C++ 14를 아직 사용하고 싶지 않다고 생각하십니까? –
@ E_net4 제 컴파일러가 아직 지원하지 않습니다. – NFRCR