Code:
export template <class Ch, class Tr, class In, class Ef, typename SgF>
basic_istream<Ch, Tr> &dataScanStatus(
basic_istream<Ch, Tr> &is,
Ef &un_format, bool mandatory, SgF status) {
ios_base::iostate state = ios_base::goodbit; // good
In eos;
(use_facet<Edifact_get<Ch, Tr, In> >(is.getloc()).*status)
(is, eos, is, state, un_format, mandatory);
return is;
}
template istream &dataScanStatus<char, char_traits<char>,
istreambuf_iterator<char, char_traits<char> >, ElementFormat,
Typedefines<char>::SetGetElementFormat>(
istream &is, ElementFormat &un_format,
bool mandatory, istreambuf_iterator<char, char_traits<char> >
(Edifact_get<char>::*sgef)(
istreambuf_iterator<char, char_traits<char> > begin,
istreambuf_iterator<char, char_traits<char> > end,
basic_ios<char> &s, ios_base::iostate &r,
ElementFormat &token, bool mandatory));
export template <class Ch, class Tr, class In>
basic_istream<Ch, Tr> &begin_of_element(
basic_istream<Ch, Tr> &is, ElementFormat &un_element,
bool mandatory) {
return dataScanStatus(is, un_element, mandatory,
&Edifact_get<Ch, Tr, In>::begin_of_element);
}
template istream &begin_of_element<char, char_traits<char>,
istreambuf_iterator<char, char_traits<char> > >(
istream &is, ElementFormat &un_element,
bool mandatory);