Wpis z mikrobloga

@Ginden: Wie Pan ja bym tu dodał może więcej różowego, moja żona lubi różowy i licznik odwiedzin, słyszałem, że to modne a niedługo święta to fajnie by było jakby zajączka wstawić w lewym dolnym rogu i niech on tak mruga do klienta, o tak - O - O
uzyj std::function zamiast pointerow na funkcje

@dupasmoka: Wymaganie wykładowcy.

main.cpp#L82 rzuca wyjatek

Zdarza się, nie ma jak obsłużyć tego wyjątku w sposób sensowny, jeśli się pojawia, to znaczy, że program znajduje się w nieokreślonym stanie (dwa wątki próbowały modyfikować ten sam wektor). Lepiej pozwolić, by program się wywalił, niż robił głupoty.

#pragma once jest zepsute

Jakieś źródła?
@Ginden: nie musisz dokonywać dereferencji wskaźników na funkcje. (btw: relevant). Nie uƶywaj std::function nadaremno, szczególnie w ciasnych pętlach takich jak Twoje. Type erasure jest praktycznie nieoptymalizowalne bez jita. Juƶ prędzej zrób klasę szablonem po typie funktora.

Zamiast bawić się w reverse, ustaw odpowiednio min i max w konstruktorze.

W konstruktorze uƶywaj listy inicjalizacyjnej zamiast wrzucać wszystko do ciała funkcji.

Jak na 1. program w C++: zajebiście.
@Ginden: do uwag powyżej dorzucę:
1. Masz błąd w implementacji fn1. Jej wzór nie odpowiada temu co jest w komentarzu, a a to jest być może błąd stylistyczny. To z kolei skłania mnie do refleksji, że te komentarze są zupełnie niepotrzebne, zamiast nich dodałbym using namespace std; na początku main.cpp - w plikach cpp jest to zupełnie normalne i legalne.
2. Odnośnie pętli w funkcji main: lepiej i czytelniej jest użyć
@losiul: Bo uniemożliwiają podklasom rozszerzenie klasy. Dla bibliotek jest to ważne dla zachowania kompatybilności wstecznej, dla kodu aplikacji - szkodliwe, bo takiej klasy Integral z polami prywatnymi w zasadzie nie da się rozszerzyć o nowe metody liczenia.