operator<<, >> defined in separated impl file