В примере в разделе функции-члена: Функции-члены
Мы получили структуру X:
struct X {
int foo(int);
};
Предпочтительный синтаксис
boost::function<int (X*, int)> f;
f = &X::foo;
X x;
f(&x, 5);
Переносимый синтаксис
boost::function2<int, X*, int> f;
f = &X::foo;
X x;
f(&x, 5);
Мои вопросы:
- Почему я должен ставить дополнительный аргумент X *, когда мой int foo (int) принимает только один аргумент? Кроме того, это то же самое, что использование boost :: bind, например:
Персона * person = new Person ("Ту", 23);
boost :: function newFunc2 = boost :: bind (& Person :: printInfo, person);
- В чем разница между предпочтительным синтаксисом и переносимым синтаксисом и когда использовать один над другим?
- Что такое функциональный объект? Это указатель на функцию?