Тип возврата mem_fn
и bind
: не указан .Это означает, что в зависимости от аргументов возвращается другой тип объекта, и стандарт не предписывает детали того, как эта функциональность должна быть реализована.
Если вы хотите выяснить, какой тип принадлежит конкретномуВ случае с конкретной реализацией библиотеки (для теоретического интереса, я надеюсь) вы всегда можете вызвать ошибку и получить тип из сообщения об ошибке.Например:
#include <functional>
struct X
{
double method(float);
};
int x = std::mem_fn(&X::method);
9 Untitled.cpp cannot convert 'std::_Mem_fn<double (X::*)(float)>' to 'int' in initialization
В этом случае обратите внимание, что имя типа зарезервировано для внутреннего использования.В вашем коде вы не должны использовать что-либо с начальным подчеркиванием (и заглавной буквой).
В C ++ 0x я предполагаю, что тип возвращаемого значения будет auto
:)
auto fun = std::mem_fn(&ClassA::method);