Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
#1

Deprecated in C++11, Function objects - C++

24.12.2012, 22:15. Просмотров 369. Ответов 3
Метки нет (Все метки)

У меня возник небольшой вопрос по поводу некоторых функциональных объектов в С++11. Вот здесь http://en.cppreference.com/w/cpp/utility/functional такие классы как unary_function, binary_function и другие методы объявлены как deprecated, то есть не рекомендуемые для дальнейшего использования. Собственно, вопрос, чем они так за винили что от них отказываются и чем новый стандарт рекомендует пользоваться вместо них?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2012, 22:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Deprecated in C++11, Function objects (C++):

литература shared objects & dynamic shared objects - C++
Привет, товариСЧи. Подкиньте пожалуйста пару тройку книженций по теме инглиш тоже пойдет, но лучше рус. Добавлено через 42 минуты ...

C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend - C++
выкидывает C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend при компиляции. что делать?

Cannot pass objects of non-POD type - C++
Создаю контейнер std::unordered_map<std::string, sers> on_us Создаю итератор: std::unordered_map<std::string, sers>::iterator...

total size of local objects too large - C++
Проблема: total size of local objects too large Создаю 4 массива вида double a, это необходимый миниум (700, 100, 350), а потом нужно...

Getch() The POSIX name for this item is deprecated - C++
Как убрать ошибку ? Если заменить на getchar(); то ошибка пропадает, но нужен ввод без entera void change_direction() //...

Ошибка компиляции array of abstract objects is not allowed - C++
Здравствуйте, следующий код выдает ошибку array of array of abstract class "tochka" is not allowed tochka pole// tochka - class...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
24.12.2012, 22:18 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Потому что с variadic templates стало возможным сделать обобщённую std::function, а не 100500 вариантов для разный арностей.
Avazart
Эксперт С++
7145 / 5322 / 275
Регистрация: 10.12.2010
Сообщений: 23,556
Записей в блоге: 17
25.12.2012, 00:21 #3
А пример можно?

Добавлено через 1 минуту
Как я помню от unary_function, binary_function нужно было наследоваться что можно было применить бинды.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
25.12.2012, 00:44 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <functional>
 
int main()
{
    std::function<int(int)> f = [](int x) { return 2 * x; };
    auto f_a = std::bind(f, 2);
    
    std::function<int(int,int,int,int)> g = [](int a, int b, int c, int x)
                                            {
                                                return a * x * x + b * x + c;
                                            };
    auto g_a = std::bind(g, 1, 2, 3, std::placeholders::_1);
    
    // 2 * 2 == 4
    // 1 * 25 + 2 * 5 + 3 == 38
    std::cout << f_a() << " " << g_a(5);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 00:44
Привет! Вот еще темы с ответами:

Почему возникает ошибка "function returning function is not allowed" - C++
Подключаю заголовочный файл .dll библиотеки, возникают ошибки #pragma once #include &lt;vector&gt; struct RSA_Interface { ...

Deprecated conversion from string constant to 'char*' - C++
Подскажите,как записать чаровский массив и можно ли его вообще записать вроде: char *one = {&quot;&quot;,&quot;один &quot;,&quot; два &quot;,&quot;три &quot;,&quot;четыре &quot;,&quot;пять...

[Warning] deprecated conversion from string constant to 'char*' - C++
Где ошибка?? #include&lt;iostream&gt; #include&lt;windows.h&gt; #include&lt;ctime&gt; using namespace std; void input(char* name,int n){ ...

Ошибка: deprecated conversion from string constant to ‘char*’ - C++
8,2.cpp: In function ‘int main()’: 8,2.cpp:31:12: warning: deprecated conversion from string constant to ‘char*’ String s1=&quot;H&quot;; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.12.2012, 00:44
Ответ Создать тему
Опции темы

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