¿Las versiones anteriores de C ++ utilizaron el operador `int` de una clase al evaluar la condición en una declaración` if () `?

Las versiones modernas de C ++ intentan utilizar elbool operador de una clase al evaluar la condición en unaif() declaración. Otros operadores de fundición, tales comoint siendo usado cuando nobool el operador existe Esto se demuestra a continuación.

#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;
}

Ejecutar este código no produce sorpresas:

TwoInts to bool
SixInts to int

Mirando un código antiguo de C ++, parece haber un cambio que me gustaría verificar.
¿Las versiones anteriores de C ++ usaron elint&nbsp;operador de una clase al evaluar la condición en unaif()&nbsp;¿declaración?&nbsp;¿Qué versiones, si las hay, hicieron eso?

La salida sugerida entonces habría sido

TwoInts to int
SixInts to int

Algunos detalles sobre por qué la pregunta: problemas con la conversión de una antigua clase de enteros grandesmayo&nbsp;ser debidoint&nbsp;contrabool&nbsp;en unaif(). Ya no tiene acceso al compilador anterior, por lo que no puede probar el comportamiento anterior.

[Editar]
Usando las respuestas a continuación y un poco más de investigación:
Responder:, muchas versiones pre ISO Standard C ++ (mediados de la década de 1980 -1998), que carecían deboolusé moldes paraint&nbsp;(u otros tipos numéricos). Variación significativa del compilador existió - erapre-estándar.

El primer estándar C ++ ISO salió en 1998 (ISO / IEC 14882: 1998, también conocido como C ++ 98). Definió labool&nbsp;tipo. Así, la norma ISO C ++ siempre ha utilizado elbool&nbsp;echar enif().