ptr_fun, биндеры и функции с аргументами-ссылками
От: rus blood Россия  
Дата: 11.10.05 08:51
Оценка:
Функция ptr_fun создает функторы pointer_to_unary_function и pointer_to_binary_function, в которых типы аргументов совпадают с типами аргументов адаптируемой фукции. Т.е. сигнатуры вызовов operator() выглядят так

Result operator()(const Arg _Left) const;
Result operator()(const Arg1 _Left, const Arg2 _Right) const;
, т.е. без референсов.

В то же время, классы binder1st и binder2nd определяют operator() так
result_type operator()(const argument_type& _Right) const
result_type operator()(argument_type& _Right) const
, т.е. вешают референсы.

Из-за этого невозможно явно использовать функции с аргументами-ссылками.

void SomeFunc(int&, int) {}
bind2nd(ptr_fun(SomeFunc), 0); /*сплошной мат-перемат*/
VC 7.1

Кто что скажет?
Имею скафандр — готов путешествовать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.