Similarly to functional_vector, which wraps std::vector, we can write a wrapper for std::set. Possible names: functional_set other (?)