Устранить неоднозначность перегруженного указателя на функцию-член в качестве параметра шаблона

Я пытаюсь воссоздатьОбразец наблюдателя где я могу идеально передать параметры для данного члена функции наблюдателей.

Если я попытаюсь передать адресфункция-член у которого естьнесколько переопределений, он не может вывести правильную функцию-член на основе аргументов.

#include 
#include 
#include 

template
struct observer_list
{
    template
    void call(Ret (Class::*func)(Args...), UArgs&&... args)
    {
        for (auto obj : _observers)
        {
            (obj->*func)(std::forward(args)...);
        }
    }
    std::vector _observers;
};

struct foo
{
    void func(const std::string& s)
    {
        std::cout < this < ": " < s < std::endl;
    }
    void func(const double d)
    {
        std::cout < this < ": " < d < std::endl;
    }
};

int main()
{
    observer_list

Ответы на вопрос(1)

Ваш ответ на вопрос