Комментарии
На 13rainТестик на знание С++, 2 года назад
0
Ну, на то, что это сильно хороший тестик, никто и не претендовал :) Потому он и тестик
Для тех, кто не разобрался:
Функция делает именно то, что от нее и ожидают - возвращает переданный ей параметр.
В первом определении переменной сначала вычисляется параметр конструктора, а потом создается переменная. Поэтому f остается нескрытой, вызывается функция f<bool>(1) и переменной f присваивается 1, true.
Во втором определении сначала создается переменная a и скрывает определение типа а, поэтому выражение представляет собой 2 сравнения: (f < a) > f. Переменная a не определена, поэтому (f < a) - или 0, или 1, смотря чем a инициализируется. Следовательно (f < a) > f равно 0, false.