Современные версии С++ пытаются использовать оператор bool для класса при оценке условия в операторе if(). Другие операторы литья, такие как int, используются, когда существует оператор bool. Это показано ниже.
#include <iostream>
using namespace std;
class TwoInts {
  public:
    int a,b;
    operator bool() { cout << "TwoInts to bool" << endl; return 0;}
    operator int()  { cout << "TwoInts to int"  << endl; return 0;}
};
class SixInts {
  public:
    int a[6];
    operator int()  { cout << "SixInts to int" << endl; return 0;}
};
int main(void) {
  TwoInts T;
  SixInts S;
  if (T) cout << "xxx" << endl;
  if (S) cout << "xxx" << endl;
  return 0;
}
Запуск этого кода не вызывает сюрпризов:
TwoInts to bool
SixInts to int
Оглядываясь на старый код на С++, похоже, есть изменение, которое я хотел бы проверить. 
 Использовали ли старые версии С++ оператор int класса при оценке условия в выражении if()? Какие версии, если они есть, сделали это?
Предполагаемый вывод тогда был бы
TwoInts to int
SixInts to int
Некоторые сведения о том, почему вопрос: проблемы с преобразованием старого большого целочисленного класса могут быть связаны с int vs. bool в if(). У вас больше нет доступа к старому компилятору, поэтому он не может проверить старое поведение.
[Изменить] 
Используя ответы ниже и еще несколько исследований: 
Ответ:  Да, многие версии ISO Standard С++ (в середине 1980-х - 1999), которые не имели bool, использовали приведения к int (или другим числовым типам). Существовало значительное изменение компилятора - оно было стандартным.
Первый стандарт С++ ISO вышел в 1998 году (ISO/IEC 14882: 1998 aka С++ 98). Он определил тип bool. Таким образом, стандарт ISO С++ всегда использовал листинг bool в if().
