我有一个带有默认参数的成员函数的类。
struct Class
{
void member(int n = 0)
{}
};
通过 std::tr1::mem_fn 我可以调用它:
Class object;
std::tr1::mem_fn(&Class::member)(object,10);
也就是说,如果我想使用默认参数调用对象上的可调用成员,那么正确的语法是什么?
std::tr1::mem_fn(&Class::member)(object); // This does not work
g++ 抱怨以下错误:
test.cc:17: error: no match for call to ‘(std::tr1::_Mem_fn<void (Class::*)(int)>) (Class&)’
/usr/include/c++/4.3/tr1_impl/functional:551: note: candidates are: _Res std::tr1::_Mem_fn<_Res (_Class::*)(_ArgTypes ...)>::operator()(_Class&, _ArgTypes ...) const [with _Res = void, _Class = Class, _ArgTypes = int]
/usr/include/c++/4.3/tr1_impl/functional:556: note: _Res std::tr1::_Mem_fn<_Res (_Class::*)(_ArgTypes ...)>::operator()(_Class*, _ArgTypes ...) const [with _Res = void, _Class = Class, _ArgTypes = int]
尽管如此,当 Class::member 被采用不同参数的成员重载时,我也有同样的问题......