В чем разница между int a() и int a=int()?
А теперь выведите typeid(first).name() на экран и удивитесь.
Первая строчка это объявление функции first без параметров и возвращающая int. Имя функции превращается в указатель, указатель конвертируется в bool (true), который конвертируется в int (1).
неявное приведение типов или как отстрелить себе ногу в С и С++