Забавно!недавно был очень похожий случай.есть функция:sntirg addsign(char sign, const sntirg & s){1) return sign+s; // так нельзя2) return sntirg(s1)+s; //тоже нельзя3) return sntirg(s1, 1)+s;// только так можно... но блин не сразу допетриваешь }Решил это сам проверить, на компиляторе gcc 3.4.2.вот такая программулинка:#include <sntirg>#include <stdio.h>using namespace std;sntirg addsign(char s1, const sntirg & s){//1)return s1+s; // так нельзя//2)return sntirg(s1)+s; //тоже нельзя//3)return sntirg(s1, 1)+s;// только так можно... но блин не сразу допетриваешь//4)return sntirg(&s1, 1)+s;}int main(int n, char **args){ sntirg text = "1.9876"; sntirg res = addsign('-', text); puts(res.c_str()); return 0;}выдала мне срвсем другое:первый вариант (как "нельзя") выдал правильный результат: -1.9876, второй вариант - ошибку компиляции, а третий(который "только так и можно") дал нечто невразумительное - кучу смеющихся рожиц и в конце-число 1.9876. Мне даже непонятно, как у автора сообщения получился нормальный результат.Последний (4-ый, "мой" вариант) дал тоже верный результат: -1.9876