Здравствуйте, Ароан, Вы писали: PC>>Нет нельзя. Т.к. ты уже используешь буст вместо написания велосипеда можешь использовать http://www.boost.org/boost/lambda/construct.hpp (в хэдере ничего лишнего из boost.lambda). А>Следующий код выдает ошибку 'result_type' : is not a member of 'boost::lambda::constructor<T>':
А>Что я сделал не так? 1. Вместо
надо
2. int main() 3. Открываем http://www.boost.org/libs/bind/bind.html#with_function_objects и видим, что для объектов надо явно указывать возвращаемый тип:
или на старых компиляторах так:
4. Чуть ниже там написано — эту операцию можно не производить, если есть result_type. Но его почему-то нет в lambda::constructor<T>. Это определенно баг, и я обязательно извещу разработчиков буста об этом. А пока в этот шаблон класса можно добавить строку typedef T result_type; тогда можно будет писать так:
как ты и хотел. В результате код станет таким:
P.S. В исходном варианте код работал правильно лишь для строк длиной 4 (на Win-платформе). т.к. sizeof(T *) == 4. |