[boost] [optional] How to use optional to lazy construct obj?