내 응용 프로그램에 boost::variant
및 boost::serialize
을 사용하고 있습니다. 직렬화 모듈에는 변형을 직렬화하기위한 지원이 내장되어 있으므로강력한 boost :: variant serialization
boost::variant<int,double> u(3.14);
// Do something with u;
// Serialize
oa << u;
이 작동합니다. 그러나, 제 문제는 직렬화가 강력하지 않다는 것입니다. 내 응용 프로그램이 컴파일되는 방식에 따라 변형의 요소가 변경 될 수 있습니다. 현재 직렬화 모듈은 단순히 '활성'변형 유형의 색인을 포함하는 것으로 보입니다. 변형이 예를 들어 boost::variant<double,string>
으로 변경된 경우 문제가됩니다.
직렬화/비 직렬화가 작동하여 형식이 serialize 된 형식이 boost::variant
의 템플릿 매개 변수가되도록이 방법을 개선하는 방법을 제안 할 수있는 사람은 누구나 있습니까? (위의 경우 boost::variant<int,double> u(3.14)
은 boost::variant<double,std::string>
으로 직렬화되지 않을 수 있습니다.이 유형의 문자열 형식과 같은 추가 정보를 제공해야 할 수도 있음을 알고 있습니다.
왜 변형의 요소를 변경 하시겠습니까? 일반적으로 파일 형식 사양이 이와 같이 변경되는 것을 원하지는 않습니다. – Mranz
보통 나는 프로그램 자체가 수치 시뮬레이션이라고 동의합니다. 시뮬레이션 클래스는 수천만 개의 가능한 조합이있는 템플릿이 많이 포함되어 있습니다. 분명히 나는 그것들 모두를 실행 파일로 인스턴스화 할 수 없다. 내 사용자 기반을 모두 자체 컴파일하면 지원 인스턴스 생성을 유지하기 위해 변형을 사용하는 것이 합리적입니다. –