лямбда все еще возвращается

для примера скажем, у меня есть 3 простыхstructс, второй из которых не содержитbar метод:

struct one {
    void foo(const int);
    void bar();
};

struct two {
    void foo(const int);
};

struct three {
    void foo(const int);
    void bar();
};

Тогда у меня естьstruct который будет управлять объектами этих типов:

struct owner {
    map<int, one> ones;
    map<int, two> twos;
    map<int, three> threes;

    template <typename T, typename Func>
    void callFunc(T& param, const Func& func) {
        func(param);
    }

    template <typename T>
    void findObject(int key, const T& func) {
        if(ones.count(key) != 0U) {
            callFunc(ones[key], func);
        } else if(twos.count(key) != 0U) {
            callFunc(twos[key], func);
        } else {
            callFunc(threes[key], func);
        }
    }

    void foo(const int key, const int param) { findObject(key, [&](auto& value) { value.foo(param); } ); }
    void bar(const int key) { findObject(key, [&](auto& value) { value.bar(); } ); }
};

Когда я пытаюсь скомпилировать это, я получаю:

ошибка:struct two не имеет имениbar

Есть ли способ, которым я могу обойти это?

Живой пример

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

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