Здравствуйте, Shmj, Вы писали:
S>Многие думают что C++ только один. На самом деле их два: обычный C++ и C++ времени компиляции. Совершенно разные языки, но есть кое-что общее. S>Т.е. предкомпилятор довольно ограничен, но не ясно насколько и различается ли он для разных компиляторов (препроцессоров?). S>Что интересно, если функция не constexpr — то if/else вообще будут проигноированы. Но как?
S>Пробую VS последней версии и последний стандарт C++.
S>Что скажете? Думаете проканает для режима компиляции? А хрена с два — пишет что функция слишком сложная. А вот так уже проканало:
Неуч, if constexpr:
template <int N>
constexpr int factorial() {
if constexpr (N <= 1)
return 1;
else
return N * factorial<N - 1>();
}
--
Справедливость выше закона. А человечность выше справедливости.
Re[2]: И все-же - ликбез по C++ времени компиляции
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, rg45, Вы писали:
R>>Неуч, if constexpr:
S>А где бы прочитать про этот второй вид C++ и его особенности. Как он взаимодействует с первым С++?
Какой еще ВТОРОЙ ВИД C++?
Просто открываешь справку по if statement и открываешь для себя тот факт, что все эти возможности находятся в ОДНОМ И ТОМ ЖЕ C++
--
Справедливость выше закона. А человечность выше справедливости.
Re[3]: И все-же - ликбез по C++ времени компиляции
Здравствуйте, Shmj, Вы писали:
S>А где бы прочитать про этот второй вид C++ и его особенности.
Любознательный вы наш, вообще-то люди, которые хотят что-то изучить, либо тратят свое время на штудирование литературы, либо тратят свои деньги на курсы/учителей. Вы же явно хотите выехать на чужом горбу. Фу таким быть.
Re[3]: И все-же - ликбез по C++ времени компиляции
Здравствуйте, Shmj, Вы писали:
R>>Неуч, if constexpr:
S>А где бы прочитать про этот второй вид C++ и его особенности. Как он взаимодействует с первым С++?
И кстати, количество способов реализовать компайл-тайм факториал в С++ слегка больше одного.
Например, можно через специализацию шаблона функции:
Здравствуйте, rg45, Вы писали:
R>Какой еще ВТОРОЙ ВИД C++? R>Просто открываешь справку по if statement и открываешь для себя тот факт, что все эти возможности находятся в ОДНОМ И ТОМ ЖЕ C++
По сути это второй вид С++ — компил-тайм С++. Он лишь похож на обычный С++ кое в чем.
Re[5]: И все-же - ликбез по C++ времени компиляции
Здравствуйте, Shmj, Вы писали:
S>По сути это второй вид С++ — компил-тайм С++. Он лишь похож на обычный С++ кое в чем.
Интерпретатор ты наш. Удивительно, что вид у тебя всего только второй получился. Я так понимаю, при каждом ударе граблями по лбу количество видов С++ будет увеличиваться.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, Shmj, Вы писали:
S>Многие думают что C++ только один. На самом деле их два: обычный C++ и C++ времени компиляции. Совершенно разные языки, но есть кое-что общее.
Три. Есть еще язык темплейтов. Он тоже Тьюринг-полный, но в отличии от упомянутых тобой двух является чисто функциональным языком с ленивыми вычислениями. Такой, типа Хаскеля, переболевшего оспой и чумой, но выжившего.
Здравствуйте, Shmj, Вы писали:
S>Вопрос такой. Есть ли краткая статья, ликбез, где бы рассматривалось зачем все это нужно и как его использовать?
Шимж, ты в своем репертуаре.
"Ликбез" в заголовке означает, что внутри будет ликбез или по крайней мере ссылка на него.
Назвал бы "Ищу ликбез" или "Нужен ликбез", в конце концов.
Впрочем, кто успел взглянуть на ник автора темы — никакого ликбеза от него не ждет...
Sine vilitate, sine malitiosa mente
Re[2]: И все-же - ликбез по C++ времени компиляции
Здравствуйте, BSOD, Вы писали:
BSO>"Ликбез" в заголовке означает, что внутри будет ликбез или по крайней мере ссылка на него. BSO>Назвал бы "Ищу ликбез" или "Нужен ликбез", в конце концов.
Причем, вопросы-то у него располагаются в самом конце, под пластами невежественной пурги. Сообщение озаглавлено как "ликбез", ни больше, ни меньше, и начинается словами "Я понял вот какую фишку. Многие думают что C++ только один. На самом деле их два...". Все выглядит так, как-будто он действительно основал теорию относительности, или доказал гипотезу Пуанкаре, и теперь хочет озарить светом нашу дремучесть.
--
Справедливость выше закона. А человечность выше справедливости.
Re[2]: И все-же - ликбез по C++ времени компиляции
Здравствуйте, Pzz, Вы писали:
Pzz>Три. Есть еще язык темплейтов. Он тоже Тьюринг-полный, но в отличии от упомянутых тобой двух является чисто функциональным языком с ленивыми вычислениями. Такой, типа Хаскеля, переболевшего оспой и чумой, но выжившего.
Стоп. Так темплейты ж эти — они как раз в момент компиляции и разворачиваются.
Re[4]: И все-же - ликбез по C++ времени компиляции
Здравствуйте, so5team, Вы писали:
S>Любознательный вы наш, вообще-то люди, которые хотят что-то изучить, либо тратят свое время на штудирование литературы, либо тратят свои деньги на курсы/учителей. Вы же явно хотите выехать на чужом горбу. Фу таким быть.
Посмотрите на эти курсы — там такие вопросы не затрагиваются. Все поверхностно.
Re[3]: И все-же - ликбез по C++ времени компиляции
Здравствуйте, Shmj, Вы писали:
Pzz>>Три. Есть еще язык темплейтов. Он тоже Тьюринг-полный, но в отличии от упомянутых тобой двух является чисто функциональным языком с ленивыми вычислениями. Такой, типа Хаскеля, переболевшего оспой и чумой, но выжившего.
S>Стоп. Так темплейты ж эти — они как раз в момент компиляции и разворачиваются.
Но только темплейты — это одно, а констелспры — это другое.