我正在尝试将回调传递给模板函数,但 GCC 给了我
error: no matching function for call to ‘Test::iterate(main(int, char**)::<anonymous struct>&)’
为什么这不起作用?(另外,由于我无法控制的原因,我不能使用 C++11。)
我也尝试过命名结构 egmyvis并调用test.iterate<myvis>(visitor),但这也不起作用。
#include <deque>
#include <iostream>
class Test {
public:
    std::deque<int> d;
    template <typename C>
    void iterate(C& c) {
        for(std::deque<int>::iterator itr = d.begin(); itr != d.end(); itr++) {
            c(*itr);
        }
    }
};
int main(int argc, char** argv) {
    Test test;
    test.d.push_back(1);
    test.d.push_back(2);
    struct {
        void operator()(int x) {
            std::cout << x << std::endl;
        }
    } visitor;
    test.iterate(visitor);
}