История изменений
Исправление monk, (текущая версия) :
В большинстве случаев обобщённый(полиморфный) код мономорфизируется на этапе компиляции
Ну-ну. Попробуй посмотреть выхлоп компилятора на
int run()
{
int res = 0;
for(int i=1; i<=100; i++) res+=i;
return res;
};
и
int run1()
{
std::list<int> x(100);
std::iota(x.begin(), x.end(), 1);
return std::accumulate(x.begin(), x.end(), 0);
}
Первое схлопывается до return 5050, а второе раскладывается в честный цикл, так как компилятор недостаточно умён.
Исходная версия monk, :
В большинстве случаев обобщённый(полиморфный) код мономорфизируется на этапе компиляции
Ну-ну. Попробуй посмотреть выхлоп компилятора на
int run()
{
int res = 0;
for(int i=1; i<=100; i++) res+=i;
return res;
};
и int run1() { std::list<int> x(100); std::iota(x.begin(), x.end(), 1); return std::accumulate(x.begin(), x.end(), 0); }
Первое схлопывается до return 5050, а второе раскладывается в честный цикл, так как компилятор недостаточно умён.