Envolver la función sobrecargada a través de la función std ::

Tengo una función sobrecargada que quiero pasar envuelta en una función std ::. GCC4.6 no encuentra una "función coincidente". Aunque encontré algunas preguntas aquí, las respuestas no son tan claras como me gustaría. ¿Alguien podría decirme por qué el siguiente código no puede deducir la sobrecarga correcta y cómo (con elegancia) solucionarlo?

<code>int test(const std::string&) {
    return 0;
}

int test(const std::string*) {
    return 0;
}

int main() {
    std::function<int(const std::string&)> func = test;
    return func();
}
</code>

Respuestas a la pregunta(1)

Su respuesta a la pregunta