I was looking at the request parser from the boost::asio example and I was wondering why the private member functions like is_char() are static? :
It's static, since it doesn't require access to any member variables of request_parser objects. Hence, making it static decouples the function since it reduces the amount of state which the function can access.
For what it's worth, it would have been even better if this function wasn't part of the request_parser class at all - instead, it should have been (possibly in a namespace) a free function in the .cpp file.