Listing 1: A function object that uses ctype for character classification

template <class charT>
struct is_char_class 
  : public std::unary_function<charT, bool>
{
private:
  const std::ctype<charT>* ct;
  std::ctype_base::mask char_class;
public:
  is_char_class(const std::ctype<charT>& f,
                std::ctype_base::mask m) 
    : ct(&f),
      char_class(m)
    { }
  is_char_class(std::locale L, 
                std::ctype_base::mask m)
    : ct(&std::use_facet<std::ctype<charT> >(L)),
      char_class(m)
    { }

  bool operator()(charT c) const {
    return ct->is(char_class, c); 
  }
};
— End of Listing —