오래전에 JAVA의 DataInputStream, DataOutputStream을 이용해 object serialization 비스무레한걸 구현 했었다.
그 때는 Android에서 동작하기만 하면 되었기 때문에, 아무 생각없이 구현을 했었는데,
오랜 시간이 지나 C++에서 그 때 저장되었던 파일을 읽으려고 하니, 간단한 문제가 아니더라. ㅠㅠ
암튼, 그래서 C++로 DataInputStream 비스무레하게 구현을 해 보려고 했는데, 기본타입에 대해서는 문제가 없는데,
문자열이나 특수한 타입에 대해서는 별도로 구현을 해 주어야 했다.
함수 인터페이스를 동일하게 만들기 위해서 function template으로 구현을 하는데,
이게 function template은 partial specialization이 불가능 하기 때문에 함수 인터페이스가 예쁘게(?) 나오지 않았다.
고민하다가, 오랜만에 Effective C++을 다시 꺼내서 훑다 보니, 역시 힌트가 있었다. Thanks Scott!
함수 반환을 성공/실패로 하고, 결과를 참조로 반환하면 타입 추론이 되니,
template argument를 명시적으로 안 줘도 될텐데... 디자인의 문제이니, 좀더 고민 해 보자.
'프로그래밍 언어' 카테고리의 다른 글
Setting up the Rust development envrionment with vscode(Windows 10 64bit)) (1) | 2018.06.04 |
---|---|
Magic statics since C++11 (0) | 2018.05.29 |
STL 호환 iterator 만들기 (3) | 2016.08.25 |
CppCon 2014: Herb Sutter "Lock-Free Programming (or, Juggling Razor Blades)" (1) | 2016.07.25 |
Spirit 3.0.0 (Boost?) (0) | 2016.07.11 |