Здравствуйте, 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>>