if chaining for boost::optional
much simplified parsing using boost::optional (''monadic'') chaining
implement either type