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

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

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

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

24.12.2012, 22:15. Просмотров 344. Ответов 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++ 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++
литература shared objects & dynamic shared objects C++
C++ Ошибка компиляции array of abstract objects is not allowed
C++ total size of local objects too large
C++ Инициализация графического драйвера: Deprecated conversion from string constant to 'char*'
C++ [Warning] deprecated conversion from string constant to 'char*'
C++ Getch() The POSIX name for this item is deprecated
C++ [Warning] deprecated conversion from string constant to 'char*'
C++ Ошибка: deprecated conversion from string constant to ‘char*’
C++ Ошибка 1 error C4996: 'getche': The POSIX name for this item is deprecated
C++ Deprecated conversion from string constant to 'char*'

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1240 / 989 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
24.12.2012, 22:18     Deprecated in C++11, Function objects #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Потому что с variadic templates стало возможным сделать обобщённую std::function, а не 100500 вариантов для разный арностей.
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,911
Записей в блоге: 17
25.12.2012, 00:21     Deprecated in C++11, Function objects #3
А пример можно?

Добавлено через 1 минуту
Как я помню от unary_function, binary_function нужно было наследоваться что можно было применить бинды.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1240 / 989 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
25.12.2012, 00:44     Deprecated in C++11, Function objects #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);
}
Yandex
Объявления
25.12.2012, 00:44     Deprecated in C++11, Function objects
Ответ Создать тему
Опции темы

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