🦥Alex Fails
о, эпик вин
🦥Alex Fails
плохо, что срёт тайпдефом
🦥Alex Fails
у меня была идея через шаблон анонимный в do {}while(0);
Andrei
Зачем?
Андрей
Всё-таки C++ - какашка(
Andrei
Просто темплейтная структура.
🦥Alex Fails
😂
🦥Alex Fails
ну да
Andrei
🦥Alex Fails
анонимная шаблонная структура
Andrei
у которой есть специализациядла <true>
Андрей
Т.е. это - норм?)
Андрей
#define STATIC_ASSERT( x ) typedef int __STATIC_ASSERT__[( x )?1:-1]
Андрей
Но ладно.
🦥Alex Fails
Andrei
Это не норм, это не надо.
Андрей
Выбора, к сожалению, нет.
Andrei
Просто однострочное решение.
Andrei
Которое никто не будет использовать.
Andrei
есть static_assert нормальный.
Andrei
Всё.
Andrei
Это рассуждения на тему, как бы это сэмулировать по-разному.
Anonymous
Ребят, вот предположим я написал функцию, будет ли она выполнена, если я нигде ее не вызвал?
🦥Alex Fails
Нет
Anonymous
Ленивых же вычислений нет, значит хоть как выполнится?
🦥Alex Fails
почему нет
Andrei
выполнена?
Andrei
зачем ей выполняться?
Andrei
нет.
Andrei
и скомпилирована она даже вероятно не будет
Anonymous
это работает с того момента как появились ленивые? с c++0x?
Anonymous
что-то я запутался
Anonymous
кароче говоря если ленивые вычисления есть, то функция не будет выполнена до ее вызова, так?
Andrei
Брр.
Andrei
О чём ты вообще.
Алдар
если ты определил функцию, но не вызвал, то она само собой не будет выполнена
Anonymous
Предположим у нас написана функция, мы вызываем ее, чтобы получить значение и выводим ее через cout к примеру cout << pow(3, 2)
Anonymous
pow(3, 2) выполнится до cout?
Две Точки
Да, конечно
Anonymous
ну вообще понятно что он так и так выполнится да
Anonymous
но он уже заранее выполнится или только после того как дойдет до cout?
Andrei
зависит от компилятора и от процессора.
Anonymous
фухх, тупые вопросы задаю наверное, уж простите но что-то я загнался
Andrei
pow(3,2) вообще компилятор заранее посчитает и подставит 9
Anonymous
Ага
Andrei
pow(i,2)
Andrei
будет выплонено после вычисления i
Anonymous
Т.е. еще до cout?
Алдар
если у тебя идёт вызов функции с двумя аргументами, и эти аргументы в свою очередь тоже считаются через вызов функции, то порядок вызова этих функций не определён
Andrei
Он не про это спрашивает.
Sergey
Эта
Алдар
С++ неленивый язык, поэтому все аргументы должны быть вычислены до вызова функции
Sergey
Вопрос не в тему
Anonymous
Так ленивый или нет?
Andrei
Он не про аргументы, про саму функцию.
Sergey
Бонус корутин в том, что ты сам управляешь временем выполнения, и все?
Andrei
Что ты подразумеваешь под ленивостью?
Andrei
Алдар
« это и есть функция
Алдар
перед тем как выполнить << надо посчитать pow
🦥Alex Fails
функция выполняется когда ты ее вызываешь
🦥Alex Fails
Или прыгнешь в ее машинный код
Anonymous
Если я не вызываю функцию, она не считается\выполняется заранее?
Andrei
Andrei
Зачем ей это делать? :D
Sergey
Бля
Andrei
В однопоточном с++ модель вычислений строго последовательная.
Andrei
И конечно в итоговом коде это не так, но да.
Sergey
Откуда ты вообще узнал про ленивые вычисления :D
Andrei
Ленивые вычисления это совсем другое, срсли.
Andrei
Это стратегия редукции лямбда термов.
Andrei
В языках типа хаскелль и пр.
Anonymous
вычисления следует откладывать до тех пор, пока не понадобится их результат.
Anonymous
это про ленивые
Andrei
Это то как приводить программу к слабозаголовочной нормальной форме
Anonymous
вот я и подумал
Anonymous
Ленивые вычисления (англ. lazy evaluation, также отложенные вычисления) — применяемая в некоторых языках программирования стратегия вычисления, согласно которой вычисления следует откладывать до тех пор, пока не понадобится их результат.
Алдар
тут нет лямбдя термов))
Алдар
это С++