프로그래밍 언어2017. 9. 14. 10:11

오래전에 JAVA의 DataInputStream, DataOutputStream을 이용해 object serialization 비스무레한걸 구현 했었다.

그 때는 Android에서 동작하기만 하면 되었기 때문에, 아무 생각없이 구현을 했었는데,

오랜 시간이 지나 C++에서 그 때 저장되었던 파일을 읽으려고 하니, 간단한 문제가 아니더라. ㅠㅠ


암튼, 그래서 C++로 DataInputStream 비스무레하게 구현을 해 보려고 했는데, 기본타입에 대해서는 문제가 없는데,

문자열이나 특수한 타입에 대해서는 별도로 구현을 해 주어야 했다.

함수 인터페이스를 동일하게 만들기 위해서 function template으로 구현을 하는데,

이게 function template은 partial specialization이 불가능 하기 때문에 함수 인터페이스가 예쁘게(?) 나오지 않았다.

고민하다가, 오랜만에 Effective C++을 다시 꺼내서 훑다 보니, 역시 힌트가 있었다. Thanks Scott!




함수 반환을 성공/실패로 하고, 결과를 참조로 반환하면 타입 추론이 되니,

template argument를 명시적으로 안 줘도 될텐데... 디자인의 문제이니, 좀더 고민 해 보자.

Posted by 세월의돌