Здравствуйте, orangy, Вы писали:
O>O>template<typename T> int round(T value) { return int(value + 0.5); }
O>
Здесь есть один тонкий момент, оператор преобразования (int)value,
будет реализован как загрузка value в регистр сопроцессора,
и выгрузка его в память как целое значение.
При выгрузке регистра его значение может быть преобразовано в целое
различными способами (в большую строну, меньшую или округление),
это будет зависеть от состояния флагов сопроцессора.
Вообщем, нет гарантии, что (int) все время будет возвращаеть ближайщее целое снизу.
И потом, я не видел, чтобы стандарт C++ явно указывал на то
как должен работать оператор (int).