Согласно моему компилятору gcc-4.6, вызов func в приведенном ниже примере неоднозначен.
void func(const std::string &str) {
}
void func(std::function<std::string()> f) {
}
void test() {
func("Hello");
}
Правильно ли это сказано компилятором?Если я уберу первую перегрузку, этот код не скомпилируется, так как он не сможет создать экземпляр соответствующих шаблонов.
Есть ли способ решить эту проблему, кроме переименования одной из двух функций или явного преобразования в std ::строка