Использовали ли старые версии C ++ оператор `int` класса при оценке условия в операторе` if () `?

Современные версии C ++ пытаются использовать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

Просматривая некоторый старый код C ++, кажется, есть изменение, которое я хотел бы проверить.
Использовали ли старые версии C ++int&nbsp;оператор класса при оценке условия вif()&nbsp;заявление?&nbsp;Какие версии, если таковые имеются, сделали это?

Предлагаемый результат тогда был бы

TwoInts to int
SixInts to int

Некоторые детали относительно того, почему вопрос: Проблемы с преобразованием старого большого целого классамай&nbsp;быть из-заint&nbsp;противbool&nbsp;вif(), Больше нет доступа к старому компилятору, поэтому нельзя проверять старое поведение.

[Редактировать]
Используя ответы ниже и еще несколько исследований:
Ответ:дамногие версии до C ++ стандарта ISO (середина 1980-х - 1998), в которых не былоbool, использовал броски, чтобыint&nbsp;(или другие числовые типы). Существовали значительные изменения компилятора - это былодо стандарта.

Первый стандарт C ++ ISO вышел в 1998 году (ISO / IEC 14882: 1998 или C ++ 98). Это определилоbool&nbsp;тип. Таким образом, стандарт ISO C ++ всегда использовалbool&nbsp;бросить вif().