¿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 operador de una clase al evaluar la condición en unaif() ¿declaración? ¿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 ser debidoint contrabool 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 (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 tipo. Así, la norma ISO C ++ siempre ha utilizado elbool echar enif().

Respuestas a la pregunta(2)

Su respuesta a la pregunta