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

C++

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

 
 
Рейтинг: Рейтинг темы: голосов - 81, средняя оценка - 4.65
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
#1

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

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

всем привет.

сабж.

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

благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2012, 12:08     Почему вы избегаете использовать возможности С++11 ?
Посмотрите здесь:
Почему следует избегать явного приведения типов? (по возможности) C++
C++ Почему break нельзя использовать в if?
Почему не получается использовать bitset в VC++? C++
C++ Почему не рекомендуется использовать препроцессор?
C++ Почему clear необходимо использовать до seekg?
C++ Почему плохо использовать unsigned int?
C++ Почему не стоит использовать ^(XOR) в swap
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Voivoid
673 / 276 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
01.08.2016, 21:42     Почему вы избегаете использовать возможности С++11 ? #101
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Но как бы у меня к примеру такого в районе 0
Лол, вообще-то большая часть алгоритмов принимает в качестве аргумента какую-либо функцию
HelicopterK52
658 / 201 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
01.08.2016, 22:01     Почему вы избегаете использовать возможности С++11 ? #102
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
int bar=5;//вот так
Цитата Сообщение от silent_1991 Посмотреть сообщение
In-place инициализация полей тоже крутая вещь.
Держите:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
 
 
class foo{
public:
    int bar=5;//вот так 
};
 
 
 
int main()
{
    foo f;
    std::cout << f.bar << std::endl;
}
http://rextester.com/OVJ52706

Надеюсь, довольны оба.
Fulcrum_013
661 / 729 / 72
Регистрация: 14.12.2014
Сообщений: 5,698
Завершенные тесты: 3
01.08.2016, 22:38     Почему вы избегаете использовать возможности С++11 ? #103
Цитата Сообщение от Voivoid Посмотреть сообщение
Лол, вообще-то большая часть алгоритмов принимает в качестве аргумента какую-либо функцию
Имеются в виду алгоритмы из std:: algoritms? У меня их пользовать негде.
Основная задача с контейнерами - пройти по спискам обработки, вызвать метод для каждого хранимого (вызываемый метод для каждого из списков обработки разный), при этом учесть что внутри метода объект может либо переместится в другой список либо вообще удалиться.
Voivoid
673 / 276 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
01.08.2016, 23:21     Почему вы избегаете использовать возможности С++11 ? #104
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Имеются в виду алгоритмы из std:: algoritms? У меня их пользовать негде.
Основная задача с контейнерами - пройти по спискам обработки, вызвать метод для каждого хранимого
Не суть важно std или нет. Т.е. разные поиски, подсчеты, группировки, отображения, фильтры, свертки, упорядочивания и прочее не нужны? Ну ок, вопросов больше не имею
Fulcrum_013
661 / 729 / 72
Регистрация: 14.12.2014
Сообщений: 5,698
Завершенные тесты: 3
01.08.2016, 23:37     Почему вы избегаете использовать возможности С++11 ? #105
Цитата Сообщение от Voivoid Посмотреть сообщение
Т.е. разные поиски, подсчеты, группировки, отображения,
Они сгруппированы по спискам отработки. При изменении состояния добавляются/удаляются в/из соответсвующего списка обработки. (функционал в базовых шаблонных классах от которого порождаются контейнер-мультисписок и содержимый объект). В результате в содержимом объекте добавляются только логика включения/выключения переключателей нахождения в том или ином списке. В общем получается что группировка по спискам/она же нужная выборка поддерживается автоматически. При этом список нужных выборок/групп всегда известен заранее.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
02.08.2016, 06:17     Почему вы избегаете использовать возможности С++11 ? #106
HelicopterK52, вы это к чему?
Fulcrum_013
661 / 729 / 72
Регистрация: 14.12.2014
Сообщений: 5,698
Завершенные тесты: 3
02.08.2016, 06:34     Почему вы избегаете использовать возможности С++11 ? #107
Цитата Сообщение от silent_1991 Посмотреть сообщение
Не понял только, почему вы её RAII обозвали)
Resource Allocation Is Initialisation
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
02.08.2016, 07:12     Почему вы избегаете использовать возможности С++11 ? #108
Fulcrum_013, вообще, Resource Acquisition Is Initialization, но я о другом. По мне, так здесь этот термин не подходит. Потому что инициализация полей в конструкторе точно так же происходит во время инициализации объекта - захвате ресурса, а не разнесена во времени с этим действием.
vxg
Модератор
3120 / 1922 / 209
Регистрация: 13.01.2012
Сообщений: 7,364
02.08.2016, 07:50     Почему вы избегаете использовать возможности С++11 ? #109
silent_1991, класс дефинишн из инициализэйшн)?
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
02.08.2016, 08:19     Почему вы избегаете использовать возможности С++11 ? #110
Fulcrum_013, умных слов много, но все какая то вода голимая
silent_1991
02.08.2016, 08:19
  #111

Не по теме:

vxg, следующий шаг, ага. Ждём в стандарте 37 года "задумка класса есть инициализация"

Avazart
7102 / 5279 / 267
Регистрация: 10.12.2010
Сообщений: 23,290
Записей в блоге: 17
05.09.2016, 01:42     Почему вы избегаете использовать возможности С++11 ? #112
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Держите:
А мне вот такая вещь не очень нравится, ибо :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
class foo
{
public:
    int bar=5; //вот так 
    
    foo();
};
 
// Где- то в cpp
foo::foo():bar(10)
{
}
 
 
int main()
{
    foo f;
    std::cout << f.bar << std::endl; // 10
}
http://ideone.com/d2Q6jH

Добавлено через 11 минут
Как в принципе и идея повсеместного auto
C++
1
auto x= Y(z);
И думай что такое Y? конструктор или функция? Какой тип x в итоге?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
//class Y
//{
//  public:
//     Y(int z){}
//};
 
//
int* Y(int z){ return new int[z]; }
 
int main() 
{
    auto x= Y(10);
    return 0;
}
http://ideone.com/5HKfcC
HelicopterK52
658 / 201 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
05.09.2016, 02:52     Почему вы избегаете использовать возможности С++11 ? #113
Цитата Сообщение от Avazart Посмотреть сообщение
А мне вот такая вещь не очень нравится
Я рад за Вас.
Цитата Сообщение от Avazart Посмотреть сообщение
ибо
И что тут не так? Код работает точно так, как его написал программист.
Если программист писал его одним место, оно и работать будет соответствуще.
То, что Вы привели не является для меня проблемой.
Цитата Сообщение от Avazart Посмотреть сообщение
Как в принципе и идея повсеместного auto
Опять нечно притянутое за уши.
Ведь какой-нибудь
typename X<T>::Y<T, U>::type::Z::Container::value_type::container::iterator::value_type::size_type куда лучше.
Цитата Сообщение от Avazart Посмотреть сообщение
И думай что такое Y?
Зачем мне это? Привести чушь, а потом пытаться её оспорить - круто.
Цитата Сообщение от Avazart Посмотреть сообщение
Какой тип x в итоге?
Не поверите, но именно тот, который выведет auto. Неожиданно?
Цитата Сообщение от Avazart Посмотреть сообщение
конструктор или функция?
Ну вот другой пример:
C++
1
MyType x = ZZZ(10);
что такое MyType и ZZZ(10)? Оно ведь тоже где-то в глубине заголовочников,
здесь нет auto, так что по Вашей теории Вы ответить должны без знания контекста.

Надеюсь, Вы поняли нелепость Ваших аргументов, исходя из нелепости моих.
Avazart
7102 / 5279 / 267
Регистрация: 10.12.2010
Сообщений: 23,290
Записей в блоге: 17
05.09.2016, 03:00     Почему вы избегаете использовать возможности С++11 ? #114
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
И что тут не так? Код работает точно так, как его написал программист.
То что теперь работать с кодом сложнее, нужно будет сразу просматривать оба файла.
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Ведь какой-нибудь
Для этого есть typedef

Добавлено через 1 минуту
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
что такое MyType и ZZZ(10)?
MyType явно тип, ZZZ(10) явно не конструктор MyType, и это достаточно много что понимания того что происходит в коде не шарясь по другим файлам лишний раз.
HelicopterK52
658 / 201 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
05.09.2016, 03:02     Почему вы избегаете использовать возможности С++11 ? #115
Цитата Сообщение от Avazart Посмотреть сообщение
То что теперь работать с кодом сложнее, нужно будет сразу просматривать оба файла.
Вам в любом случае придется это делать.
Цитата Сообщение от Avazart Посмотреть сообщение
Для этого есть typedef-ы
ага, я вон привел пример, в котором есть MyType.
можете сказать что это, не просматривая другие файлы?

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
ZZZ(10) явно не конструктор
Ошибочка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
struct ZZZ
{
    ZZZ(int){}
    operator int(){return 0;}
};
 
 
int main()
{
    int x = ZZZ(10);
}
Avazart
7102 / 5279 / 267
Регистрация: 10.12.2010
Сообщений: 23,290
Записей в блоге: 17
05.09.2016, 03:04     Почему вы избегаете использовать возможности С++11 ? #116
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
ага, я вон привел пример, в котором есть MyType.
можете сказать что это, не просматривая другие файлы?
Я же говорю тип, этого достаточно. Если я просматривал его заголовочный файл то вообще хорошо.
Более того можно сделать предположение(при вменяемом именовании и коде) указатель это или нет.

Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Цитата Сообщение от Avazart Посмотреть сообщение
MyType явно тип, ZZZ(10) явно не конструктор
Ошибочка
Полная цитата звучит так
Цитата Сообщение от Avazart Посмотреть сообщение
MyType явно тип, ZZZ(10) явно не конструктор MyType
HelicopterK52
658 / 201 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
05.09.2016, 03:07     Почему вы избегаете использовать возможности С++11 ? #117
Цитата Сообщение от Avazart Посмотреть сообщение
Я же говорю тип, этого достаточно.
А auto выводит не тип?
А может у меня MyType это
C++
1
#define MyType
???
Цитата Сообщение от Avazart Посмотреть сообщение
Если я просматривал его заголовочный файл то вообще хорошо.
Если я просматривал объявление Вашего Y то тоже знаю что это.
А если не просматривать, то и ZZZ не узнать что такое.

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
Полная цитата звучит так
Разницы не имеет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
struct ZZZ
{
    ZZZ(int){}
};
 
 
 
using MyType = ZZZ;
 
 
 
int main()
{
    MyType x = ZZZ(10);
}
Avazart
7102 / 5279 / 267
Регистрация: 10.12.2010
Сообщений: 23,290
Записей в блоге: 17
05.09.2016, 03:10     Почему вы избегаете использовать возможности С++11 ? #118
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
так что по Вашей теории Вы ответить должны без знания контекста.
В идеале да, но С++ контекстно зависимый язык изначально, и тем не менее есть то что менее читаемо и более читаемо.
HelicopterK52
658 / 201 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
05.09.2016, 03:10     Почему вы избегаете использовать возможности С++11 ? #119
Я уже написал, что если код писать через одно место,
то точно через тоже место потом и придется с этим кодом работать.
И никакие отказы от auto, также как и его применение не помогут.
Если код написан адекватно, то тип, выводимый auto либо
и так очевиден, либо вообще вторичен в данном месте и его знание не дает особой пользы,
либо тип очень сложно или вообще нельзя вывести обычными методами.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2016, 03:12     Почему вы избегаете использовать возможности С++11 ?
Еще ссылки по теме:
Почему нельзя использовать более одной TServerSocket? C++ Builder
Что лучше использовать QMake или CMake и почему?
Пояснить, почему в примере не рекомендуется использовать закрытое наследование C++
C++ Почему программа в Windows может использовать лишь 1792 мегабайта RAM?
C++ Почему нельзя в конструкторе использовать параметр по умолчанию, если конструктор не встроен?

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

Или воспользуйтесь поиском по форуму:
Avazart
7102 / 5279 / 267
Регистрация: 10.12.2010
Сообщений: 23,290
Записей в блоге: 17
05.09.2016, 03:12     Почему вы избегаете использовать возможности С++11 ? #120
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
А может у меня MyType это
Тогда нескомпилится.

Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Разницы не имеет:
Еще какая разница.

auto приводит нас к тому что нужно читать код не слева на право как это обычно делается, а справа налево, т.е довольно непривычный способ ранее для С++. (что бы по конструктору/функции понять какой тип)
Yandex
Объявления
05.09.2016, 03:12     Почему вы избегаете использовать возможности С++11 ?
Ответ Создать тему
Опции темы

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