template<class _E>
struct string_char_traits;
struct string_char_traits<char> {
typedef char _E;
typedef _E char_type;
static void assign(_E& _X, const _E& _Y)
{_X = _Y; }
static bool eq(const _E& _X, const _E& _Y)
{return (_X == _Y); }
static bool ne(const _E& _X, const _E& _Y)
{return (!eq(_X, _Y)); }
static bool lt(const_E& _X, const _E& _Y)
{return (_X < _Y); }
static _E eos()
{return ('\0'); }
static basic_istream<_E, ios_traits<_E> >&
char_in(basic_istream<_E, ios_traits<_E> >& _I, _E& _X)
{_I.get(_X);
return (_I); }
static basic_ostream<_E, ios_traits<_E> >&
char_out(basic_ostream<_E, ios_traits<_E> >& _O, _E _X)
{_O.put(_X);
return (_O); }
static bool is_del(_E _X)
{return (isspace((int)_X)); }
static int compare(const _E *_U, const _E *_V, size_t _N)
{return (memcmp(_U, _V, _N)); }
static size_t length(const _E *_U)
{return (strlen(_U)); }
static _E *copy(_E *_U, const _E *_V, size_t _N)
{return ((_E *)memcpy(_U, _V, _N)); }
};