I wasn't completely sure how to phrase what I wanted to ask in the title so I'll try to clarify it better in what follows.
For C++ software library developers, what abstract interfaces do you find yourselves rewriting often between projects/jobs? For instance, I would imagine that it is fairly common practice for different projects to write abstract interfaces for "printing" objects and for serializing objects based on the requirements of that project (even if they are implemented in terms of other established libraries which provide a lot of that functionality). What are your experiences with this?
If the question is too vague feel free to recommend how to clarify it.