Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> constexpr, Зачем? 
:(
    Опции темы
Ilya83
Дата 6.1.2014, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.1.2014

Репутация: нет
Всего: нет



Есть Константы, есть макросы. Зачем придумали constexpr?? На форуме нашел, как чел выпендривается тем, что он может вычислить факториал на этапе компиляции Для этого???  smile Сразу сюда вопрос: как мне в настройках IDE прописать, чтобы С++11 работал? (windows 7, QT Creator) 
PM MAIL   Вверх
disputant
Дата 7.1.2014, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 28.11.2011

Репутация: нет
Всего: 3



Ну, например, знаете такую функцию - 
Код
numeric_limits<short>::max()
. По факту - константа, но использовать как константу - нельзя, не поймет компилятор! А если объявить как constexpr - пожалуйста, можно описать, скажем, массив 
Код
array<float,std::numeric_limits<short>::max()> a
.

Ну, а вычислять факториал на уровне компиляции можно и с помощью шаблонов - как два байта переслать smile


PM MAIL   Вверх
vinter
Дата 7.1.2014, 09:41 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 8
Всего: 56



Можешь посмотреть мою статью, я там привёл некоторые причины, которые объясняют преимущества constexpr. 


--------------------
Мой блог
PM MAIL WWW   Вверх
Ilya83
Дата 7.1.2014, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.1.2014

Репутация: нет
Всего: нет



vinter, Хах дааа! Вот на чем я застрял! Попытка определить константу в классе. Подскажите, как мне использовать constexp ? Мой компилятор MinGW говорит, что я должен явно указать, что хочу использовать C++11 (windows, qt Creator) 
PM MAIL   Вверх
Ilya83
  Дата 7.1.2014, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.1.2014

Репутация: нет
Всего: нет



Проблема решена! Добавил QMAKE_CXXFLAGS += -std=c++11 в .pro файл. Всем спасибо Но свой пример я так и не нашел. Везде пишут про конструктор или функцию Тогда тут что:

Код

constexpr int windowWidth{800}, windowHeight{600};

...................

RenderWindow window{windowWidth, windowHeight};


???????

Это сообщение отредактировал(а) Ilya83 - 7.1.2014, 13:36
PM MAIL   Вверх
akizelokro
Дата 7.1.2014, 18:58 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



..долгополз

.. дыры затыкают ввиду всякой непродуманности и непоследовательности. Зато зашибись! С рулез! форевер!

А я прочитал ещё про пару GCC extensions, вообще крутяк.
Здеся вообщ проблемы, что в первом стандарте конструкции типа throw и ряд подобных ввобще не выдержали проверки действительной реальностью.

"И это бывает.."

Это сообщение отредактировал(а) akizelokro - 7.1.2014, 19:10


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
vinter
Дата 7.1.2014, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 8
Всего: 56



Ilya83, я не очень понимаю твой вопрос. В твоём случае constexpr значит тоже самое, что const


--------------------
Мой блог
PM MAIL WWW   Вверх
akizelokro
Дата 7.1.2014, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Сегодня же выползли из другой темы, где внутри объявления структуры можно было инициализировать/задавать только const static члены структуры. Небось в своё время возник вопрос, а почему такая несправедливость?
И тут проявилось наследие С, что если проблема навзничь не решается, - она должна быть решена по любому.

IMPORTANT***==========================================
C++ по подходу даже не выход к ООП, а лишь средство индустриализации С. Но при этом в ООП не стоит задача кроме самореализации, а у С была изначально задача решать все задачи.


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
Ilya83
  Дата 7.1.2014, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.1.2014

Репутация: нет
Всего: нет



Цитата

я не очень понимаю твой вопрос.


Дык вот и я о том же!!! Все норм. люди делают константы. Только Сишникам надо обязательно выя.....ца. Написать код в 1-ну строчку, понаделать #defineов, пол кода выполнить на этапе компиляции. Потом это выложить в сеть дескать Вот зыкайте какой я мля кодер продвинутый  smile  (извиняюсь Накипело)
PM MAIL   Вверх
akizelokro
Дата 7.1.2014, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Цитата(Ilya83 @  7.1.2014,  21:56 Найти цитируемый пост)
Дык вот и я о том же!!! Все норм. люди делают константы. Только Сишникам надо обязательно выя.....ца. Написать код в 1-ну строчку, понаделать #defineов, пол кода выполнить на этапе компиляции. Потом это выложить в сеть дескать Вот зыкайте какой я мля кодер продвинутый  smile  (извиняюсь Накипело) 


Все эти и ещё куча других трюков реализуются на ассемблере. Сшник есть средство перейти в усечённое множество трюков с одной целью - попытаться реализовать все (почти всё), что можно сделать на асме. Только немного быстрее. Но на этом, фактически, написана вся индустрия.
И тут остаётся только преклонить голову перед разнообразием жизни и признать как данное её самоё.

Добавлено через 10 минут и 23 секунды
Хотя с переходом к усечённому множество трюков не ахти как "успешно" получается. Тной раз подумаешь, что и ООП весь один большой трюк.

Добавлено через 12 минут и 52 секунды
Кстати, кто-то из известных штатовцев засел в Microsoft, чтобы привести VC++ к стандарту. Но позавчера читал, что реализовано в VS2013, так шести пунктов (или 7) из стандарта ещё нет. Список щас не приведу.

Это сообщение отредактировал(а) akizelokro - 7.1.2014, 22:45


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
Ilya83
Дата 7.1.2014, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.1.2014

Репутация: нет
Всего: нет



Просто надо создать новый язык с++ А вся новизна в том, чтобы убрать все совместимости с пред. стандартами. Раздражает эта салянка Все, как хотят так и пишут. Вывод строки на экран (например) Кто scanf, кто printf, кто cout, кто............ Может выберете уже что-то одно???!!!  smile 
PM MAIL   Вверх
disputant
Дата 8.1.2014, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 28.11.2011

Репутация: нет
Всего: 3



Цитата(Ilya83 @ 7.1.2014,  23:12)
Может выберете уже что-то одно???!!!  smile

Гм, каждый выбирает то, что ему больше подходит.
Как раз этим C++ и приятен, помимо прочего - богатством выбора.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2329 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.