add function_wrapper and compressed_pair, use EBO to make ranges smaller