Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
1

Адаптер функции bind()

19.08.2015, 22:04. Просмотров 1044. Ответов 5
Метки нет (Все метки)

Читаю у Липпмана про адаптер bind, ...какие-то знакоместа. Компилятор на них ругается, я тоже.
Вывести тип на создаваемый объект он тоже не может, пример из книги.

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <functional>
using namespace std;
bool check_size(const string &str, string::size_type sz){
    return str.size() < sz;
}
int main(){
    auto check6 = bind(check_size, _1,6);
    return 0;
}
||=== Build: Debug in asd (compiler: GNU GCC Compiler) ===|
In function 'int main()':|
error: '_1' was not declared in this scope|
note: suggested alternative:|
note: 'std:laceholders::_1'|
error: unable to deduce 'auto' from '<expression error>'|
warning: unused variable 'check6' [-Wunused-variable]|
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2015, 22:04
Ответы с готовыми решениями:

Перегруженные функции и bind
Привет всем! В классе QPushButton есть две версии функции 1....

std::bind
Можно ли, и если да, то как с помощью этой функции сделать следующее: auto...

bind + map
Вопрос, почему это не работает? Вроде же все правильно вызывается.int main() {...

Где применяется bind
Можете пожалуйста привести пример, где boost::bind (или сейчас уже std::bind)...

Bind + string::front
Почему я не могу это забиндить ?:#include &lt;iostream&gt; #include &lt;string&gt;...

5
hoggy
Заблокирован
Эксперт С++
19.08.2015, 22:09 2
Лучший ответ Сообщение было отмечено Ilot как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <functional>
 
// не имейте такой привычки
// и не будет у вас глупых проблем
//using namespace std;
 
bool check_size(const std::string &str, std::string::size_type sz){
    return str.size() < sz;
}
int main(){
    auto check6 = std::bind(check_size, std::placeholders::_1,6);
    return 0;
}
1
gromo
376 / 275 / 30
Регистрация: 04.09.2009
Сообщений: 1,223
20.08.2015, 01:42 3
Цитата Сообщение от hoggy Посмотреть сообщение
C++
1
2
3
4
int main(){
    auto check6 = std::bind(check_size, std::placeholders::_1,6);
    return 0;
}
Думаю, нормальной практикой будет добавить
C++
1
2
3
4
5
6
int main()
{   using namespcae std::placeholders; // вот эту директиву.
 
    auto check6 = std::bind(check_size, _1, 6);
    return 0;
}
А от using namespace std; действительно, — стоит воздержаться.

Цитата Сообщение от dzrkot Посмотреть сообщение
note: suggested alternative:|
note: 'std:: placeholders::_1'|
Нехорошо игнорировать то, что может подсказать компилятор. Какими же будут ваши действия, когда он будет не в состоянии поведать в чем проблема?

Не по теме:

Эх, кого я обманываю, concepts на подходе, и 150-этажные template's errors канут в лету :cry:

1
hoggy
Заблокирован
Эксперт С++
20.08.2015, 05:40 4
Цитата Сообщение от gromo Посмотреть сообщение
Думаю, нормальной практикой будет добавить
Вы мне это зачем сообщаете?
Я ортогонален стилям и легко читаю их суржик.
Примеры-иллюстрации должны быть красноречивыми, что бы у нубов не возникало глупых вопросов.
1
gromo
376 / 275 / 30
Регистрация: 04.09.2009
Сообщений: 1,223
20.08.2015, 14:09 5
hoggy, я здесь для ТС изъяснялся, а ваш примерчик процитировал чисто для иллюстрации. Прошу прощения, если как-то задел ваши интересы.
1
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
20.08.2015, 15:40  [ТС] 6
Цитата Сообщение от gromo Посмотреть сообщение
Нехорошо игнорировать то, что может подсказать компилятор. Какими же будут ваши действия, когда он будет не в состоянии поведать в чем проблема?
честно после работы уже устал, голова не соображала, всем спасибо
0
20.08.2015, 15:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2015, 15:40

Разобраться с std::bind, плейсхолдеры
Здравствуйте, чтобы разобраться с основами std::bind написал следующий код: ...

Передача std::bind в функцию
Ребята, помогите разобраться с 28 строкой. Глубоко не копал, но должно ведь...

Правильное использование bind1st (bind)
Есть пользовательский класс Money. Есть следующие определения typedef Money...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru