check std::begin() and std::end() are able to be applied
make boost::optional outputtable