Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dzrkot
zzzZZZ...
523 / 354 / 54
Регистрация: 11.09.2013
Сообщений: 2,039
#1

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

19.08.2015, 22:04. Просмотров 502. Ответов 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() (C++):

Перегруженные функции и bind - C++
Привет всем! В классе QPushButton есть две версии функции 1. void setGeometry(int x, int y, int w, int h) 2....

std::bind - C++
Можно ли, и если да, то как с помощью этой функции сделать следующее: auto var=std::bind(&amp;f, &quot;arg&quot;); //... //... //тут надо из...

bind + map - C++
Вопрос, почему это не работает? Вроде же все правильно вызывается.int main() { using map_t = std::map&lt;std::string, int&gt;; map_t...

Где применяется bind - C++
Можете пожалуйста привести пример, где boost::bind (или сейчас уже std::bind) необходим и без него не обойтись. Просто, понимаю как...

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

Правильное использование bind1st (bind) - C++
Есть пользовательский класс Money. Есть следующие определения typedef Money mon; typedef vector&lt;mon&gt; monVec; typedef monVec::iterator...

5
hoggy
6862 / 3069 / 525
Регистрация: 15.11.2014
Сообщений: 6,983
Завершенные тесты: 1
19.08.2015, 22:09 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
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 канут в лету

1
hoggy
6862 / 3069 / 525
Регистрация: 15.11.2014
Сообщений: 6,983
Завершенные тесты: 1
20.08.2015, 05:40 #4
Цитата Сообщение от gromo Посмотреть сообщение
Думаю, нормальной практикой будет добавить
Вы мне это зачем сообщаете?
Я ортогонален стилям и легко читаю их суржик.
Примеры-иллюстрации должны быть красноречивыми, что бы у нубов не возникало глупых вопросов.
1
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
20.08.2015, 14:09 #5
hoggy, я здесь для ТС изъяснялся, а ваш примерчик процитировал чисто для иллюстрации. Прошу прощения, если как-то задел ваши интересы.
1
dzrkot
zzzZZZ...
523 / 354 / 54
Регистрация: 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, плейсхолдеры - C++
Здравствуйте, чтобы разобраться с основами std::bind написал следующий код: #include &lt;functional&gt; #include &lt;vector&gt; void...

Std::bind с контролем типом - C++
В общем, нужно реализовать аналог std::bind, который 1. Переводит void (*callback)(Args...) в std::function&lt;void()&gt; 2. Если среди Args...

Передача std::bind в функцию - C++
Ребята, помогите разобраться с 28 строкой. Глубоко не копал, но должно ведь компилиться :) #include &lt;iostream&gt; #include &lt;vector&gt; ...

Освобождение памяти после std:bind - C++
Что имею: - CentOS - gcc 4.8 - valgrind Что делаю - С помощью valgrind устраняю утечки - Если приложение остановлено...


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

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

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