#include <iostream>
#include <functional>

class Parent {
protected:
    void foo() {
        std::cout << "Parent::foo()\n";
    }
};

class Child : public Parent
{
public:
    //void foo() { Parent::foo(); } //This compiles
    using Parent::foo; //This does NOT compile
};
int main() {
    Child c;
    c.foo();

    std::function < void () > f = std::bind(&Child::foo, &c);
    return 0;
}