Re[10]: Не пора ли нам перейти на D
От: jedi Мухосранск  
Дата: 27.02.07 15:31
Оценка:
Здравствуйте, Слоноежик, Вы писали:

С>
С>template eval(A...) { alias A eval; }

С>//использование
С>static result = eval!(factorial(5));

С>


Интересно-интересно. А способен eval отличить недетермирированные функции от детерминированных? Если нет — то это полная ж...
А вдруг:
1) функция factorial зависит от некторых глобальных переменных (которые инициализируются в main и соответственно не проиницализированы в момент выполнения этой функции на этапе компиляции);
2) функция factorial вызывает функции из внешних библиотек, о которых неизвестно детерминированы они или нет (я уж не говорю оразных версиях этих библиотек в момент компиляции и исполнения);
3) тупо зовет rand() или time();

Каким будет результат компиляции в этом случае? Или программист сам себе злой буратино, если написал такое? Если так, то чем это "лучше"
пресловутых граблей С/С++ с = & == ?

P.S. Вопрос относится не только к D, это скорее вопрос ко всем адептам compile-time вычислений. Если средства в современных языках, помогающие разруливать описанные ситуации? Если есть, то как?
... << RSDN@Home 1.2.0 alpha rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.