Re[36]: Вопрос к Vlad2: Nemerle & R#
От: WolfHound  
Дата: 28.03.06 08:05
Оценка: 28 (2)
Здравствуйте, FR, Вы писали:

FR>1.234 + 123.23232. такое даже компиляторы восьмилетней давности без проблем считали. Современные целые цепочки вызвов функции умеют в одну ассемблерную инструкцию превращать.

Ты путаешь оптимизацию и вычисления во время компиляции. Это хоть и близкие но всетки разные вещи.
Вот это вычисления во время компиляции
template< int N >
struct Factorial {
    enum { value = N * Factorial< N-1 >::value };
};

template<>
struct Factorial< 0 > {
    enum { value = 1 };
};
...
int i = Factorial< 0 >::value;

А это оптимизация
float foo()
{
    return 1;
}
float bar()
{
    return 2;
}
...
float i = foo() + bar();//в рантайме будет подставлена 3

Причем если логика будет сильно навороченая то оптимизатор не сможет это оптимизировать даже если это будет теоритически возможно.

Так вот С++ не умеет работать с числами с плавающей точкой во время компиляции. Стандарт у него такой.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.