Будет ли это работать для вас?

ющий фрагмент кода выдает ошибку «неоднозначный вызов foo» во время компиляции, и я хотел бы знать, есть ли способ обойти эту проблему без полной квалификации вызова foo:

#include <iostream>

struct Base1{
    void foo(int){
    }
};

struct Base2{
    void foo(float){
    }
};

struct Derived : public Base1, public Base2{
};

int main(){
    Derived d;
    d.foo(5);

    std::cin.get();
    return 0;
}

Итак, вопрос, как следует из названия. Идеи? Я имею в виду следующее работает без нареканий:

#include <iostream>

struct Base{
    void foo(int){
    }
};

struct Derived : public Base{
    void foo(float){
    }
};

int main(){
    Derived d;
    d.foo(5);

    std::cin.get();
    return 0;
}

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

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