使用lambda表达式代替std::mem_fn。例如,如果需要调用类Foo的方法bar(int),可以这样写:
Foo foo; auto f = [&foo](int x){ return foo.bar(x); }; std::sort(vec.begin(), vec.end(), f);
其中,f是一个lambda表达式,它接受一个int类型的参数x,并调用foo的bar方法。这样就可以避免使用std::mem_fn,避免了上述的编译错误。
上一篇:编译器无法识别友元函数。
下一篇:编译器无法推断参数的类型,如何在调用对象的函数时告诉编译器使用的类型?