Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Результаты опроса: Почему вы избегаете использовать С++11 ?
еще не дошел до изучения. 23 37.10%
а зачем мне оно? 13 20.97%
мой компилятор не поддерживает. 18 29.03%
а что это? оО 11 17.74%
Опрос с выбором нескольких вариантов ответа. Голосовавшие: 62. Вы ещё не голосовали в этом опросе

 
 
Рейтинг 4.96/74: Рейтинг темы: голосов - 74, средняя оценка - 4.96
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2

Почему вы избегаете использовать возможности С++11 ?

13.01.2012, 12:08. Показов 18108. Ответов 123
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет.

сабж.

я-то, в полную использую. везде где только могу.
но частенько вижу вопросы типа: "а без использования С++0х нельзя?"
любопытна аргументация.

благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2012, 12:08
Ответы с готовыми решениями:

Отключение возможности использовать Flash накопители
Доброго времени. Есть рабочий компьютер на котором крутится 1с. Были случаи что пользователи скачивали БД, нужно каким то образом...

Создать команду, расширяющую функциональные возможности системы Unix. Использовать конв
Ребята, очень нужно помощь в лабораторной работе по Linux. Нужно Создать команду, расширяющую функциональные возможности системы Unix (см....

Разработать многопоточное приложение. Использовать возможности, предоставляемые пакетом java.util.concurrent
Разработать многопоточное приложение. Использовать возможности, предоставляемые пакетом java.util.concurrent. Не использовать слово...

123
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
25.07.2016, 13:49
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от hoggy Посмотреть сообщение
а вообще, не совсем понятно, в чем у вас проблема.
Проблема в том, что я не знаю, как собрать Boost в Visual C++ 2015 с XP-Toolset.
И нормальных решений в Гугле я не нашел. Всякие патчи бинарников, изменение
исходников Буста и т.п. не интересуют.

Цитата Сообщение от hoggy Посмотреть сообщение
прокидываем нужное окружение среды.
там ещё дефайн какой то нужно посетить.
для буста все аналогично.
Я был бы очень признателен, если бы хоть кто-нибудь описал четко
правильную последовательность действий. Лично для меня это бы
стало еще одним шагом в сторону C++11 и выше.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.08.2016, 07:07
Цитата Сообщение от Nick Alte Посмотреть сообщение
Вот все эти 14-15 лет они их опасным нововведением и считают.
Шаблоны в С++ от рождения. Это один из двух плюсов. Второй из плюсов ООП. Может они ключевое слово class тоже опасным нововведением считают?

Добавлено через 40 минут
Из новомодных фич использую разве что nullptr. удобно. Лямбды использую только в случае острой необходимости, т.е работы с отставшими от жизни лет на 20 компиляторами не имеющими нативных делегатов. Что касается всего остального - то STL не пользую принципиально, а соответственно и все нововведения в ней тоже. Шаблоны тоже особо не наворачиваю, так что хватает и того что было раньше, тем более что шаблоны у меня разве что в инфраструктурной части. т.е. списки владения + набор списков обработки со слежением за жизненным циклом и состоянием содержимого. ну еще деревья такие же. Остальное математика, причем по определенным причинам вся в float без вариантов.
ну explicit еще пользую частенько.
и RAII для нестатик членов тоже удобнейшая штука.
А вот RTTI толкового не хватает. Имеется в виду не только и не столько получение имени полиморфного типа, а получение списка типов в т.ч. инстанционированных шаблонов,средства создания инстанса, информация о свойствах с адресами геттеров и сеттеров. Был бы во всю пользовал бы. (нехватает настолько что приходится сейчас пилить свой препроцессор который его изобразит)
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.08.2016, 07:59
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
работы с отставшими от жизни лет на 20 компиляторами не имеющими нативных делегатов
Это где?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
ну explicit еще пользую частенько.
Не нововведение 11 стандарта.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
и RAII для нестатик членов тоже удобнейшая штука.
Поясните, пожалуйста.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А вот RTTI толкового не хватает. Имеется в виду не только и не столько получение имени полиморфного типа, а получение списка типов в т.ч. инстанционированных шаблонов,средства создания инстанса, информация о свойствах с адресами геттеров и сеттеров. Был бы во всю пользовал бы. (нехватает настолько что приходится сейчас пилить свой препроцессор который его изобразит)
Согласен, но это уже ближе к рефлексии, которую многие сильно ждут наряду с concepts и модулями.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.08.2016, 08:24
Цитата Сообщение от silent_1991 Посмотреть сообщение
Это где?
Это по большому счету все окромя С++ Builder
Цитата Сообщение от silent_1991 Посмотреть сообщение
Поясните, пожалуйста.
C++
1
2
3
4
class foo{
       int bar=5;//вот так
 
}
Цитата Сообщение от silent_1991 Посмотреть сообщение
Согласен, но это уже ближе к рефлексии, которую многие сильно ждут наряду с concepts и модулями.
При этом она у всех есть уже 20 лет но только черти как и с доступом только из своего фреймверка который в комплекте.

Цитата Сообщение от silent_1991 Посмотреть сообщение
Не нововведение 11 стандарта.
для конструкторов с 98-го. А вот для опреаторов с 11-го.

Добавлено через 10 минут
Цитата Сообщение от silent_1991 Посмотреть сообщение
concepts и модулями
Лучше бы static if ввели бы (хотя это не так уж критично). а что касается модулей, то по большому счету в С++ каждая функция или класс является модулем. отмена #include и т.п. сделает систему раздельной компиляции гораздо менее удобной, а в нормальных компиляторах уже лет 20 существует #pragma link позволяющая в хидере указать что добавить в линковку.
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.08.2016, 08:36
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
При этом она у всех есть уже 20 лет но только черти как и с доступом только из своего фреймверка который в комплекте.
Ну само собой, пока поддержки в ядре языка не будет - будет она везде через одно место реализована...
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
для конструкторов с 98-го. А вот для опреаторов с 11-го.
Я и забыл про это... Согласен, чрезвычайно полезная штука, небольшой шажок к чуть более строгой типизации)

In-place инициализация полей тоже крутая вещь. Не понял только, почему вы её RAII обозвали)

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Это по большому счету все окромя С++ Builder
А вот здесь хочется всё же более развёрнутого ответа. О каких нативных делегатах речь?

Добавлено через 6 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Лучше бы static if ввели бы
Если вы об этом, то ждем поддержку 17 стандарта компиляторами)

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
а что касается модулей, то по большому счету в С++ каждая функция или класс является модулем
Мне не очень понятно такое определение, но в любом случае, компилятору надо явно показать, где оно лежит из чего состоит внутри. Если в случае функции достаточно объявить её, а об остальном позаботится линкер, то в случае класса нужно его полное объявление, что зачастую влечёт собой выставление напоказ незначащих для пользователя деталей реализации вместе с интерфейсом класса. Попытка сокрытия этих деталей выливается в использование странных паттернов, которые не архитектуру позволяют улучшить, а просто являются костылями, которых бы не было, будь в языке нормальные модули.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
отмена #include и т.п. сделает систему раздельной компиляции гораздо менее удобной
Вот уж не знаю, в Rust вон сделали модули, и всё очень удобно и прозрачно работает.
0
 Аватар для Voivoid
710 / 284 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
01.08.2016, 12:37
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
компиляторами не имеющими нативных делегатов
И как будет выглядеть в borland'е, ну например, передача компоратора в функцию сортировки?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.08.2016, 18:37
Цитата Сообщение от Voivoid Посмотреть сообщение
И как будет выглядеть в borland'е, ну например, передача компоратора в функцию сортировки?
С просто функциями все точно так же, но и использование просто функций для параметризации в районе 0 при использовании концепии событийного программирования, в основном требуются обработчики событий . Имеются в виду указатели на методы объекта.
Ведь гораздо проще инициализировать делегата вот так:
C++
1
Event=Obj->Metod;
чем городить огород с лямбдой и замыканием.
0
 Аватар для Voivoid
710 / 284 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
01.08.2016, 18:44
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
С просто функциями все точно так же,
Так же, это как? Какой компаратор будет для сортировки int'ов? Какой компаратор будет для сортировки структуры по одному из полей? Для каждого из этих случаев писать функцию/метод?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.08.2016, 19:18
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
чем городить огород с лямбдой и замыканием.
Как раз проще написать одноразовую лямбду прямо в том месте, где она нужна, чем описывать отдельную функцию/метод/класс-функтор - т.е. полноценную сущность, и использовать её лишь в одном-единственном месте.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.08.2016, 19:36
Цитата Сообщение от silent_1991 Посмотреть сообщение
Как раз проще написать одноразовую лямбду прямо в том месте, где она нужна, чем описывать отдельную функцию/метод/класс-функтор - т.е. полноценную сущность, и использовать её лишь в одном-единственном месте.
Не в случае с делегатами-обработчиками событий.
C++
1
2
3
Event=[Obj](type1 arg1,type2 arg2)->rettype{return Obj->Method(Arg1,Arg2); } //так инициализируется делегат при 
помощи лямбды
Event=Obj->Method; // так инициализируется  делегат при нативной поддержке  компилятором, сигнатуру компилятор проверит compile time.
Т.е. нативная поодержка явно выигрывает по читабельности и краткости записи. Если есть еще и переназначение обработчиков, что при событийном программировании на каждом шагу, то лямбда-болото ведет к резкому снижению читабельности и многократному дублированию говнокода.
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.08.2016, 19:42
Fulcrum_013, стоп-стоп-стоп. Если у вас уже есть реализованный функтор (будь то функция, метод или объект с перегруженным оператором ()) - вы его точно так же можете передать в алгоритм или куда хотите. А вот если нет - тут-то и пригодятся лямбды. Именно для таких случаев они и нужны - чтобы не плодить одноразовые сущности. Определил, использовал, забыл. Не стоит быть столь категоричным.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.08.2016, 19:55
Цитата Сообщение от silent_1991 Посмотреть сообщение
Именно для таких случаев они и нужны - чтобы не плодить одноразовые сущности. Определил, использовал, забыл. Не стоит быть столь категоричным.
Есть класс номер раз. Он имеет набор событий. Есть класс номер два три четыре пять и т.д.о которых классу номер раз вообще ничего не известно. Задача - привязать к событию метод из объектов классов два, три четыре пять, десять и т.д. с совпадением сигнатур. Именно это и позволяет сделать нативная поддержка делегатов, без всякого не относящегося к делу кода. присвоил обработчик и все. Компилятор сигнатуры проверил, и все ок. Если нативной поддержки нет то приходится лямбда-костыль использовать или при его отсутствии городить функторы вручную (во времена DOS так и делал). Т.е. с нативной поддержкой делегатов при присваивании указателя на метод объекта,получается компилятор определил использовал и забыл.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.08.2016, 20:00
Fulcrum_013, std::function, std::mem_fn.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.08.2016, 20:02
Цитата Сообщение от silent_1991 Посмотреть сообщение
std::function, std::mem_fn.
Ну это и есть лямбда-костыль. При этом нативная поддержка делегатов появилась задолго до лябда-костылей. В 1997-ом.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.08.2016, 20:04
Fulcrum_013, не вижу здесь ничего костыльного, не понимаю, каким боком тут лямбды (в общем случае), но это по крайней мере стандартная штука, в отличие от "нативной поддержки делегатов".
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.08.2016, 20:10
Цитата Сообщение от silent_1991 Посмотреть сообщение
в отличие от "нативной поддержки делегатов"
Вот за то что в стандарте нет нативной поддержки делегатов комитет стоит конкретно выпороть. Так же как и за свойств и за RTTI. Потому как у всех есть уже 20 лет только по разному, а в стандарте нет? Почему что это языковые средства которые не могут быть реализованы библиотечными средствами. А спецификация языка не является субъектом авторского права в отличии от кода библиотеки. Соответсвенно развивая язык а не пропихивая в обязаловку кривые поделки Dincumware бабаса не наваришь.

Добавлено через 1 минуту
Цитата Сообщение от silent_1991 Посмотреть сообщение
каким боком тут лямбды (в общем случае)
Другого способа вызвать метод объекта неизвестного заранее класса кроме как через лямбду нет. В стандарте нет указателей на метод объекта, есть только указатели на метод класса.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.08.2016, 20:15
Fulcrum_013, так а чем же всё-таки не устраивают стандартные средства?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
пропихивая в обязаловку кривые поделки Dincumware
А вот тут я что-то пропустил. У меня сложилось впечатление, что они только буст потихоньку в стандарт затаскивают
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.08.2016, 20:28
Цитата Сообщение от silent_1991 Посмотреть сообщение
А вот тут я что-то пропустил. У меня сложилось впечатление, что они только буст потихоньку в стандарт затаскивают
Ну знач с STL им бабаса мало . Опять же его надо переодически обновлять чтоб капусту стричь, а то авторское право имеет срок давности. Но начиналось все это с пропихивания поделок Dincumware.

Добавлено через 6 минут
Цитата Сообщение от silent_1991 Посмотреть сообщение
так а чем же всё-таки не устраивают стандартные средства?
Их отсутствием.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.08.2016, 20:42
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Другого способа вызвать метод объекта неизвестного заранее класса кроме как через лямбду нет. В стандарте нет указателей на метод объекта, есть только указатели на метод класса.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
 
class IntFinder {
public:
    explicit IntFinder(int value): m_value(value) { }
    bool check(int value) const { return m_value == value; }
private:
    int m_value;
};
 
int main() {
    IntFinder f(42);
    std::vector<int> vec = { 1, 3, 42, 5, 7 };
    auto finder = std::mem_fn(&IntFinder::check);
    auto pred = std::bind(finder, f, std::placeholders::_1);
    auto v = std::find_if(std::begin(vec), std::end(vec), pred);
    std::cout << *v << std::endl;
    return 0;
}
http://ideone.com/DDvjvh

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Но начиналось все это с пропихивания поделок Dincumware.
Ну почему же из вас по 10 раз приходится информацию вытягивать?..

0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
01.08.2016, 21:05
Цитата Сообщение от Voivoid Посмотреть сообщение
ак же, это как? Какой компаратор будет для сортировки int'ов? Какой компаратор будет для сортировки структуры по одному из полей? Для каждого из этих случаев писать функцию/метод?
Будет через лямбду. Но как бы у меня к примеру такого в районе 0. Потому что в основном задачи во первых требуют обычно не сортировки, а поддержания упорядоченности последовательности при добавлении, во вторых заранее известно по какому из полей поддерживать сортировать структур, т.е. возможна реализация операторов сравнения для структур. В третьих количество используемых последовательностей базовых типов равна нулю, использование структур тоже около нуля. Преимущественно последовательности указателей на полиморфные классы, которые при всем при этом обычно нуждаются не в сортировке а в слежении за жизненным циклом и переброске из списка в список при изменении состояний.

Добавлено через 12 минут
а если вот так надо:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
typedef int (__closure *TEvent)(int a);
 
class foo{
       public:
       TEvent OnEvent=nullptr; 
       Foo();
       void SomeMethod(){
                int a;
              // do some tasks;
              b=Onhandler?OnHandler(a):a;
              //do other tasks;
       } 
};
class bar{
        public:
        int Handler(int a){
                         //Do some tasks
                      return a+2;
             }; 
}
class baz{
        public:
        int Handler(int a){
                         //Do other tasks
                      return a-2;
             }; 
}
int main(){
           Foo *a=new Foo();
           Bar *b=new Bar();
           Baz *c=new Baz();
           a->OnEvent= b->Handler;
           a->SomeMethod();
           a->OnEvent= c->Handler;
           a->SomeMethod();
}
при этом классы Bar и Baz созданы не только для того чтобы к a чего то прибавить. к примеру все три класса элементы отображения (ну или вообще долгоживущие элементы модели), которым необходимо оповещать другие элементы в случае каких либо своих действий.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.08.2016, 21:05

Почему при Process.Start не открывает спец возможности
К примеру есть код который должен при нажатие на кнопку, открыть специальные возможности Process.Start(&quot;access.cpl&quot;); ...

Почему следует избегать явного приведения типов? (по возможности)
Почему следует избегать явного приведения типов? (по возможности)

Почему все рекомендуют для вёрстки меню использовать списки, если проще для этих целей использовать
если для этих целей, особенно для горизонтального меню, проще использовать подряд несколько тегов &lt;a&gt; Для них не придётся задавать...

Программисты С++, почему вы не используете все возможности этого замечательного языка программирования?!
Классы, перегруженные классы, пространства имен. Почему в ваших программах нет этого? Почему в ваших программах нет проверок данных,...

Почему на одном ноуте в настройках архивирования нет возможности сохранить архив в сети?
Надо было перенести Win7 на новый винт. В сети где-то нашел инфу как перенести виндовс на другой винт встроенными средствами. По той...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru